![]() |
1
6
这存储在编译器的执行字符集中。编译器可以选择这是什么,并将其记录下来
编译器执行字符集实际上根本不必与ASCII兼容。例如,它可以是EBDIC。
编码不会根据字符串的内容而改变。编译器将始终使用执行字符集。我假设1514是个错别字
该设置与编译器使用的编码无关。它只是将Microsoft标题中的宏设置为不同的内容。TCHAR、在*W和*A函数之间选择的所有宏等。 事实上,当您启用“unicode”时,完全可以使用多字节字符串编写程序,而当您启用了“多字节字符集”时,也可以使用unicode。
这个问题毫无意义。也许如果你换个说法。。。 |
![]() |
2
1
Latin-1集合中的重音字符(如¨)在Unicode中有两种表示方式:合成和分解。合成版本是一个字符,分解版本是两个字符。您可以查看以下资源 http://www.fileformat.info/info/unicode/char/e8/index.htm ; 它会告诉您,您在问题中发布的字符是合成的,在UTF-8中是0xC3 0xA8(c3a8)(两个字节)。 也可能是在ACP中为Latin1编译,而不是在Unicode中编译,在这种情况下,所有这些字符的长度都是一个字节。
我无法理解你1514年的故事;我想知道char[]=“xxxx”是否没有使用尾随零进行初始化,但我不记得其中一种方式。你可以试着把它们改成
|
![]() |
3
1
你的消息来源已过时。早在UCS-2是唯一的Unicode编码的早期,Unicode就被限制在U+FFFF的最大码点,但几年前Unicode就超越了这一限制。创建UTF(UTF-8、UTF-16、UTF-32)是为了取代UCS-2并扩展限制,即当前的码点U+10FFFF(UTF-16可以编码的最高码点)。 |
![]() |
dukyz · 为什么java中的字符串解码和编码并不总是对称的? 6 年前 |