检测编码转换问题

时间:2009-01-07 03:21:29

标签: c# encoding utf-8 windows-1252

我公司网站上的大部分内容都是以Word文档(Windows-1252编码)开头,最终被复制并粘贴到我们的UTF-8编码内容管理系统中。转换通常会扼杀几个字符(特殊字符,智能引号,科学记号),这些字符必须手动清理,但当然有一些字符总是会漏掉。

您认为最好的方法是检测这些?

3 个答案:

答案 0 :(得分:2)

你到底在做什么转换?

整个Word复制问题是我经常遇到的问题,但它应该很容易解决。

您提到的这些字符都在0x80 - 0x9F范围内the Windows-1252 code page differs from the ISO-8859-1 code page。该范围在ISO-8859-1中未定义。

你必须从ISO-8859-1(或者可能是ISO-8859-15)而不是Windows-1252进行转换,导致它阻塞该范围内的字符。

您应该调整转换的源编码,或者如果这不可能(我不熟悉C#,但我对此表示怀疑),请使用代码页图表修复与主要文件分开的32个问题字符转换。

答案 1 :(得分:1)

您可以将文本另存为.rtf,然后使用其他程序解析吗?

你能使用Word的VBA将文本保存为理智吗?

答案 2 :(得分:1)

如前所述,最好将Word内容导出为可解析的格式(RTF或XML都可以)。

可能有一个特定的原因使用复制粘贴将材料添加到CMS但是通过复制和粘贴,您可能总是最终会进行某种视觉检查和修复,除非您创建一个监视工具剪贴板。

从Word(最新版本)Word复制和粘贴时,剪贴板有几种不同的格式可供使用,其中一种格式是基于XML的。 可以创建一些东西来清理剪贴板上的Word XML,并将文本版本(可能粘贴到CMS)“设置”为清理后的格式。

您可以使用Office和标准C#剪贴板函数附带的Word.interop来创建它。该工具可以在Word的顶部(在后台)工作,同时向CMS添加内容。