### Summary

```
$ ansible-vault encrypt_string secret
Encryption successful
!vault |
          $ANSIBLE_VAULT;1.1;AES256
          61633966613365393435663962393261376338336136313065376437373838636336623565363239
          6630383564363634636364613830613561316333623739380a653764333864666363663539363363
          65316331636165353761626461386166633330623835316362393361343333396234663638653666
          3163373561623331340a633161373437343563333135343933376634643638613332643964313135
          3430%                                                                                                                    
 
```
If you look at the end of the printed data, it contains a `%`, which is a character that is added by the terminal in order to inform user that the executed command did not end-up with a newline.

Now you can easily guess that when user will copy/paste that yaml block, their will have a surprise, as decoding will not work,.... because of the extra `%` at the end.


This bug can easily be avoided by ensuring that we add a newline at the end of the dumped data, as this will not affect the validity of the dumped YAML, but will avoid having the terminal add the `%` character at the end of the last line, a character which will render the entire block invalid for decryption.

### Issue Type

Bug Report

### Component Name

encrypt

### Ansible Version

```console
$ ansible --version
ansible [core 2.14.0b1]
  config file = /Users/ssbarnea/.ansible.cfg
  configured module search path = ['/Users/ssbarnea/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /Users/ssbarnea/.pyenv/versions/3.11-dev/lib/python3.11/site-packages/ansible
  ansible collection location = /Users/ssbarnea/.ansible/collections:/usr/share/ansible/collections
  executable location = /Users/ssbarnea/.pyenv/versions/3.11-dev/bin/ansible
  python version = 3.11.0rc2+ (heads/3.11:8e2bda8227, Sep 19 2022, 10:59:25) [Clang 14.0.0 (clang-1400.0.29.102)] (/Users/ssbarnea/.pyenv/versions/3.11-dev/bin/python3.11)
  jinja version = 3.1.2
  libyaml = True
```


### Configuration

```console
-
```


### OS / Environment

MacOS

### Steps to Reproduce

Just configure a ANSIBLE_VAULT_PASSWORD_FILE=.vault_pass and put a password inside the vault file, so you can easily encrypt and decypt.

Try to encrypt a secret like `ansible-vault encrypt_string secret`, select the output and paste it inside a playbook for use.

### Expected Results

Be able to copy/paste the output and be able to use it.

### Actual Results

```console
Vault format unhexlify error: Odd-length string
```


### Code of Conduct

- [X] I agree to follow the Ansible Code of Conduct
''' can encrypt any structured data file used by Ansible.
    This can include *group_vars/* or *host_vars/* inventory variables,
    variables loaded by *include_vars* or *vars_files*, or variable files
    passed on the ansible-playbook command line with *-e @file.yml* or *-e @file.json*.
    Role variables and defaults are also included!
    Because Ansible tasks, handlers, and other objects are data, these can also be encrypted with vault.
    If you'd like to not expose what variables you are using, you can keep an individual task file entirely encrypted.
    '''
    name = 'ansible-vault'
    FROM_STDIN = "stdin"
    FROM_ARGS = "the command line args"
    FROM_PROMPT = "the interactive prompt"
    def __init__(self, args):
        self.b_vault_pass = None
        self.b_new_vault_pass = None
        self.encrypt_string_read_stdin = False
        self.encrypt_secret = None
        self.encrypt_vault_id = None
        self.new_encrypt_secret = None
        self.new_encrypt_vault_id = None
        super(VaultCLI, self).__init__(args)
    def init_parser(self):