如果我创建一个带有 u8
前缀的字符串文字,机器代码是否知道并表明该变量的相应值应该以 UTF-8 编码?
这样无论我在哪里运行程序,计算机每次都知道如何编码?还是机器代码没有说,像这样这样编码?
因为如果我用普通字符编码一些东西,用 UTF-8 编码一些东西(例如使用 u8),那么如果机器代码没有说明任何内容,那么有什么区别,计算机如何知道编码?
最佳答案
u8"..."
字符串始终以 UTF-8 编码,如 [lex.string]/1
中指定的那样.
"..."
字符串的编码取决于编译器(以及源文件编码),但是配置 IDE 以 UTF-8 保存文件应该不难,并且您的编译器不会在纯字符串文字中使用 UTF-8。
无论如何,编码完全在编译时处理。在编译后的代码中,字符串只是字节序列;在运行时编码之间没有转换,除非您显式调用执行此操作的某个函数。
https://stackoverflow.com/questions/69508951/