我公司网站上的大部分内容都以 Word 文档(Windows-1252 编码)开始,最终被复制并粘贴到我们的 UTF-8 编码内容管理系统中。转换通常会阻塞一些必须手动清理的字符(特殊中断字符、智能引号、科学记数法),但当然有一些总是会漏掉。
你认为最好的方法是检测这些?
我公司网站上的大部分内容都以 Word 文档(Windows-1252 编码)开始,最终被复制并粘贴到我们的 UTF-8 编码内容管理系统中。转换通常会阻塞一些必须手动清理的字符(特殊中断字符、智能引号、科学记数法),但当然有一些总是会漏掉。
你认为最好的方法是检测这些?
你究竟是如何进行转换的?
整个从 Word 复制的问题是我经常遇到的问题,但它应该真的很容易解决。
您提到的那些字符都在Windows 0x80
- 1252 代码页与 ISO-8859-1 代码页不同的0x9F
范围内。该范围在 ISO-8859-1 中未定义。
您必须从 ISO-8859-1(或者可能是 ISO-8859-15)而不是 Windows-1252 进行转换,导致它在该范围内的字符上阻塞。
您应该调整转换的源编码,或者,如果这不可能(我不熟悉 C#,但我对此表示怀疑),请使用代码页图表来修复与主转换分开的 32 个问题字符。
您可以将文本保存为 .rtf,然后使用其他程序对其进行解析吗?
您可以使用 Word 的 VBA 将文本保存为理智的东西吗?
如前所述,最好将 Word 内容导出为可解析的格式(RTF 或 XML 都可以)。
使用复制和粘贴将材料添加到您的 CMS 可能有一个特定的原因,但是通过复制和粘贴,除非您创建一个监视剪贴板的工具,否则您可能总是会以某种视觉检查和修复回合结束。
从 Word(最新版本)复制和粘贴时,剪贴板有几种不同的格式可供使用,其中一种格式是基于 XML 的。可以创建一些内容来清理剪贴板上的 Word XML,并将文本版本(您可能粘贴到 CMS)“设置”为清理后的格式。
您可以使用 Office 附带的 Word.interop 和标准 C# 剪贴板功能来创建它。该工具可以在 Word 的顶部(在后台)工作,同时将内容添加到 CMS。