Начнём с простой строки в C++Строка символов интерпретации компилятором
char const* hello = "動画、読書な"; // I hope it is not offensive, I dont know what this means))
И сделать точку, что эта строка хранится в кодировке UTF-8 закодированный файл. Когда я передаю файл с этой линии для компиляции (результат двоичного кода), то при компиляции необходимо выполнить следующие шаги:
- Считывает файл (он должен знать, что это файл кодировки, в случае UTF- 8, вероятно, будет легко с помощью спецификации, но как насчет других кодировок?)
- Проанализируйте содержимое файла, используя его грамматику, постройте синтаксическое дерево, ...
- Если все в порядке, оно начинает писать двоичный код, в на этом этапе он сохраняет константы в коде.
Вопрос в том, как он будет хранить константу выше («動画, 読 書 な»)? Он каким-то образом преобразует его? Или он просто считывает байты после «символа до другого» из файла и сохраняет их как есть? Значит ли это, что окончательный двоичный код зависит от исходной кодировки исходного файла?
Поведение хорошо определено только для компиляторов в C++ 11. http://en.wikipedia.org/wiki/C%2B%2B11#New_string_literals – BlamKiwi