我们知道,在windows系统中,我们可以在“控制面板\时钟、语言和区域”中为非Unicode程序设置locale语言。但是本地语言对应用程序意味着什么?由于我的理解,应用程序是编译后的二进制可执行文件,其中只有机器码指令,没有数据,那么字符编码如何影响它们的运行?
一种猜测是,如果可执行文件在代码段中包含一些文字字符串,它将使用一些内部字符集对它们进行编码。如果字符集不是 unicode,那么它将显示垃圾。但是内部的Charset是不是固定的?就像在 Java 中一样,java 规范定义了内部编码是 UTF-16。
希望有人能回答我的问题,
谢谢。
最佳答案
Windows 有两种程序可以与之对话的方法,称为“ANSI API”和“Unicode API”,“非 Unicode 应用程序”是通过“ANSI API”而不是“非 Unicode 应用程序”与 Windows 对话的方法“Unicode API”。
这意味着应用程序传递给 Windows 的任何字符串都只是字节序列,而不是 Unicode 字符序列。 Windows 必须决定字节序列对应于哪些字符,而您正在谈论的控制面板设置就是它如何做到这一点。
因此,例如,在设置为使用 Windows Western 的 PC 上输出值为 0xE4 的字节的非 unicode 程序将显示字符 ä,而设置为希伯来语的程序将显示字符Д.
关于java - 什么是非 unicode 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3879756/