我不是专业的开发人员,在将Unicode text
转换为ANSI
时遇到问题,但遗留应用程序不支持Unicode
。
以下是在遗留应用程序中显示Unicode
编码文本时的样例:
échaquejournéedes quatre jours de colloque,entre 250 et 500 personnes sont场地assister en continu aux discussion de cette 论战。 Cette富裕,ainsi que la richesse etlavariétédes 讨论参与者,确认la néessesséd'un espace ouvert pourlespensé©critiques dans le monde francophone,Ãl'universitéet bien au-delÃ。
我注意到以下事项:
我有几个问题:
为什么文档与CharacterMap
之间存在差异:是
以Unicode
之外的其他内容编码的文档?例如,为什么
被é
编码为C3A9
而不是00E9
?
我使用以下VB.Net代码将文档从Unicode
转换为Ansi
:如何将所有C320
替换为à
?
Dim Encw1252 As Encoding = Encoding.GetEncoding("windows-1252")
Dim EncUTF8 As Encoding = Encoding.GetEncoding("utf-8")
Dim Str As String
Str = Encw1252.GetString(Encoding.Convert(EncUTF8, Encw1252, encoding.Default.GetBytes(Clipboard.GetText)))
Clipboard.SetText(Str)
答案 0 :(得分:0)
(在问题编辑中回答。转换为社区维基回答。请参阅What is the appropriate action when the answer to a question is added to the question itself?)
OP写道:对于其他人'利益,使用以下代码解决问题:
Dim Encw1252 As Encoding = Encoding.GetEncoding("windows-1252") Dim EncUTF8 As Encoding = Encoding.GetEncoding("utf-8") Dim Str As String Str = Clipboard.GetText Str = Str.Replace("Ã ", "Ã ") Str = Encw1252.GetString(Encoding.Convert(EncUTF8, Encw1252, Encoding.Default.GetBytes(Str))) Clipboard.SetText(Str) MessageBox.Show(Str)
在上面的
Str.Replace(
)中,源中的第二个字节是空格(20),而目标中的第二个字节是"没有中断空格" (160)。