如何将 ANSI 文本转换为 Unicode?

Posted

技术标签:

【中文标题】如何将 ANSI 文本转换为 Unicode?【英文标题】:How to convert ANSI text to Unicode? 【发布时间】:2012-11-29 16:26:02 【问题描述】:

我想将 RTF 文本转换为 Unicode。在 RTF 字体表中,可以找到字体或字体的名称(例如 Arial Cyr、Courier Greek)和与之一起使用的字符集(0-255)。那么如何编写一个函数,将具有这些设置的字符代码(0-255)转换为Unicode?​​p>

如我所见,希腊语、Cyr、Tur 等后置标签会影响显示字符的字形,而字符集也会影响它。所以函数可以有这些输入参数:

字体名称后缀、字体字符集、字符代码

但接下来是什么?还是我走错路了?

【问题讨论】:

这是用于什么编程语言的?此外,字体无关紧要,您只需要将字符集转换为例如 UTF-8。 - What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text 这是重复的,看这里***.com/questions/2192319/… 我在windows下的c++上。我不相信字体是无关紧要的,因为有例如 Symbol、Webding 和其他特殊的字体名称,这会导致问题。 fontname 后缀也很重要,但我不知道 Windows 是如何处理这些后缀的。 此上下文中的 ANSI 定义不明确。 Microsoft 过去错误地使用该术语来指代特定的选定代码页,但正确的术语是字符集或(用 Microsoft 的说法)代码页;而且不止一个。有一个将 Windows-1252 标准化为 ANSI 代码页的提议,但它基本上失败了,发生的事情是国际标准 ISO-8859 使这项工作过时了。 (ISO-8859-1 大体上与 Windows 代码页兼容,但有细微差别。) 【参考方案1】:

RTF 早在 Unicode 之前就发明了。它肯定不是 ANSI 文本,RTF 只使用 ASCII,它使用字符集与以十六进制编码的非 ASCII 字符以及对字符集的引用的相当邪恶的混合。映射也不完美,很多 Unicode 代码点没有对应的字符集。

您将花费一生的时间来创建自己的 RTF 到 Unicode 转换器。利用现有的解决方案,大多数平台都有一个。在 Windows 上,这将是 RichEdit 控件。如果您使用 .NET,则特别简单,使用 RichTextBox 类,分配其 Rtf 属性并读回其 Text 属性。这是 utf-16 编码的 Unicode。

【讨论】:

非常感谢你,汉斯!我会试试这个,并分享结果。

以上是关于如何将 ANSI 文本转换为 Unicode?的主要内容,如果未能解决你的问题,请参考以下文章

该文件含有unicode格式的字符,当文件保存为ANSI编码的文本文件时,该字符将丢失.

如何将 DOS ANSI (CP 437) 文件转换为带有 Unicode 的 Unix ANSI?

如何检查TXT文本是否ANSI编码格式的?

如何把txt 批量从utf8转换为ascii,最好有工具

记事本里出现该文件含有Unicode格式的字符,当保存为ANSI编码的文本时,该字符将丢失。怎么回事啊??

多字符集(ANSI)和UNICODE及字符串处理方式准则