Winapi Windows编码说明

Winapi Windows编码说明,winapi,character-encoding,non-ascii-characters,Winapi,Character Encoding,Non Ascii Characters,我想翻译一个游戏,这个游戏从文本文件加载字符串 目标语言使用非ascii字符,因此我天真地将文件保存在utf8中,但它不起作用,因为带变音符号的字母显示不正确 在存储字符串文本文件名的配置文件中进行了更好的研究,我发现了一个字符集选项,可以采用以下任何值: ANSI字符集默认字符集符号字符集MAC字符集移位JIS字符集Hangul字符集JOHAB字符集GB2312字符集中文字符集IG5字符集希腊字符集土耳其字符集越南字符集希伯来字符集阿拉伯语字符集波罗的海字符集俄语字符集泰国字符集东欧字符集OE

我想翻译一个游戏,这个游戏从文本文件加载字符串

目标语言使用非ascii字符,因此我天真地将文件保存在utf8中,但它不起作用,因为带变音符号的字母显示不正确

在存储字符串文本文件名的配置文件中进行了更好的研究,我发现了一个字符集选项,可以采用以下任何值:

ANSI字符集默认字符集符号字符集MAC字符集移位JIS字符集Hangul字符集JOHAB字符集GB2312字符集中文字符集IG5字符集希腊字符集土耳其字符集越南字符集希伯来字符集阿拉伯语字符集波罗的海字符集俄语字符集泰国字符集东欧字符集OEM字符集

据我所知,这是WinAPI中相当标准的值,字符集和字符编码是同义词


所以我的问题是,这个名称和标准名称如utf8或iso-8859-2之间是否有对应关系?如果是这样,那是什么?

尝试使用
东欧字符集

基本相当于。根据本文,1250代码页是使用
EASTEUROPE\u CHARSET
访问的

请注意,您需要将文本文件保存在1250代码页中,因为ISO 8859-2并不完全等效。发件人:

Windows-1250与ISO-8859-2类似,具有所有可打印字符以及更多字符。但是,其中一些字符被重新排列(与Windows-1252不同,Windows-1252将ISO-8859-1中的所有可打印字符保留在同一位置)。大多数重新排列似乎是为了将与Windows-1252共享的字符保持在与Windows-1252相同的位置,但移动的三个字符(Ą、Ľ、ź)不能以这种方式解释


这些名称是Windows代码页的符号标识符,是Microsoft定义或采用的字符编码(=字符集)。其中许多都带有前缀
windows-
。例如,
EASTEUROPE\u CHARSET
代表代码页1250,已注册为
windows-1250
,通常称为windows拉丁语2


UTF-8有些不同。您需要特殊的例程来读取和写入UTF-8编码的数据。当您想要真正实现全局性(支持不同的语言和书写系统)时,UTF-8或UTF-16通常是字符编码的唯一明智选择。对于单一特定语言,某些代码页在某些情况下可能更实用。

您可以使用此页备注部分下的表格获取标准编码名称(注册人)


只需找到字符集行并读取代码页码,标准名称为windows-[代码页码]。

windows-1250不编码我需要的某些字符。我需要那些特色菜:咖啡。我试着用这个文本编写一个utf8文件,然后我试着用--iconv-c-f utf-8-t windows-1250 DICRITICS来转换它--结果只转换了é和î(和caps)。但是,如果您链接的代码页表与windows-X编码相关,我可以试用。@Paolo.Bolzoni这些代码可以在
ANSI_CHARSET
,又名windows 1252,又名“Western”中找到。请记住,Microsoft确实有UTF-8:65001的代码页。但是,UTF-8没有相应的
XXX\u字符集
XXX\u字符集
值对应于Ansi字符集。