Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否所有Windows字体都以相同的方式表示扩展ASCII?_Windows_Visual Studio_Internationalization_Iso 8859 1 - Fatal编程技术网

是否所有Windows字体都以相同的方式表示扩展ASCII?

是否所有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功能与其他一些名称 这对我来说很有用-它在精度旁边以我的默认字体显示正确的符号

在我的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功能与其他一些名称

这对我来说很有用-它在精度旁边以我的默认字体显示正确的符号


我的问题是:我是否为覆盖默认字体的用户引入了一个问题?所有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转换。