是否所有Windows字体都以相同的方式表示扩展ASCII?
在我的Visual Studio 2012应用程序中,我刚刚编写了以下内容:是否所有Windows字体都以相同的方式表示扩展ASCII?,windows,visual-studio,internationalization,iso-8859-1,Windows,Visual Studio,Internationalization,Iso 8859 1,在我的Visual Studio 2012应用程序中,我刚刚编写了以下内容: _snprintf_s(page[row++], NUM_COLS, _TRUNCATE, " Lat: %-11s (\x0b1 %3.1fm)", lat_string, lat_precision_meters); \xb1是“+/-”符号的转义码,177为扩展ASCII码,ISO 8859 我读到,这最初是一个Windows功能与其他一些名称 这对我来说很有用-它在精度旁边以我的默认字体显示正确的符号
_snprintf_s(page[row++], NUM_COLS, _TRUNCATE, " Lat: %-11s (\x0b1 %3.1fm)",
lat_string, lat_precision_meters);
\xb1是“+/-”符号的转义码,177为扩展ASCII码,ISO 8859
我读到,这最初是一个Windows功能与其他一些名称
这对我来说很有用-它在精度旁边以我的默认字体显示正确的符号
我的问题是:我是否为覆盖默认字体的用户引入了一个问题?所有Microsoft提供的字体是否都符合ISO 8859-1?字体映射Unicode字符。唯一的问题是解码遗留字符编码。这通常会导致mojibake,因为文件将被天真地解码为系统ANSI或OEM代码页。在西方,ANSI通常是代码页1252,这是拉丁语-1(ISO-8859-1)的超集,但C1控制范围(0x80-0x9F)不同。碰巧的是,“+/-”在常见的ANSI代码页中编码是一致的,但从一步到0xb2,这在代码页1252中是“²”,在1251(西里尔语)中是“i”。现代应用程序应该使用Unicode。如果需要字节,请使用UTF-8。否则,请切换到宽字符API(例如
\u snwprintf\u s
)使用UTF-16LE。Windows不使用ASCII或任何扩展ASCII。如果应用程序坚持,Windows将转换为Unicode或从Unicode转换。字体映射Unicode字符。唯一的问题是解码传统字符编码。这通常会导致mojibake,因为文件会被天真地解码为系统ANSI或OEM代码页。在西方,ANSI通常是联合使用的depage 1252,它是拉丁语-1(ISO-8859-1)的超集,除了C1控件范围(0x80-0x9F)中的差异。碰巧在常见的ANSI代码页中“+/-”的编码是一致的,但跨过一步到0xb2,在代码页1252中是“²”,在1251(西里尔语)中是“Ⅰ”。现代应用程序应该使用Unicode。如果需要字节,请使用UTF-8。否则,切换到宽字符API(例如,\u snwprintf\u s
)并使用UTF-16LE。Windows不使用ASCII或任何扩展ASCII。如果应用程序坚持,Windows将转换为Unicode或从Unicode转换。