This article presents the options for customizing the script language to the application's needs with regards to strings. If you do not want, or do not need to have AngelScript use your own string type, then I suggest you use one of the standard string add-ons, either the std::string registration, or the reference counted string type.
// Set engine to use ASCII scanner for script code engine->SetEngineProperty(asEP_SCRIPT_SCANNER, 0);
If you do use Unicode, then you'll also want to choose the desired encoding for the string literals, either UTF-8 or UTF-16. By default the string literals in AngelScript are encoded with UTF-8, but if you're application is better prepared for UTF-16 then you'll want to change this by setting the engine property asEP_STRING_ENCODING to 1 before compiling your scripts.
// Set engine to use UTF-16 encoding for string literals engine->SetEngineProperty(asEP_STRING_ENCODING, 1);
Observe that the string factory called by the engine to create new strings gives the size of the string data in bytes even for UTF-16 encoded strings, so you'll need to divide the size by two to get the number of characters in the string.
// Set engine to allow string literals with line breaks engine->SetEngineProperty(asEP_ALLOW_MULTILINE_STRINGS, true);
Observe that the line ending encoding of the source file will not be modified by the script compiler, so depending on how the file has been saved, you may get strings using different line endings.
The heredoc strings are not affected by this setting, as they are designed to support multiline text sections.
If you want to have single quoted literals mean a single character literal instead of a string, then you can do so by setting the engine property asEP_USE_CHARACTER_LITERALS to true. The compiler will then convert single quoted literals to an integer number representing the first character.
// Set engine to use character literals engine->SetEngineProperty(asEP_USE_CHARACTER_LITERALS, true);
Observe that the asEP_SCRIPT_SCANNER property has great importance in this case, as an ASCII character can only represent values between 0 and 255, whereas a Unicode character can represent values between 0 and 1,114,111.