0

我们的编程团队目前使用的是一个使用Win1252编码的数据库,但是这个数据库本身也不太擅长过滤掉坏数据。

很多时候,我们程序的最终用户只是简单地从 MSWord 复制并粘贴他们的信息,然后插入到我们的数据库中,这会导致我们的数据库中出现各种有时无法解释的时髦字符。

目前是否有任何库可以解析使用 MSWord 的本机编码编码的字符串并将其转换为类似的ascii、UTF8 或 Win1252 格式?

类似地,我的意思是将看起来像 `` 的奇怪双引号翻译成典型的 "。

如果我的问题完全模糊,请通知我,以便我可以根据需要进行更新。

4

2 回答 2

1

在此处查看 Jeff Atwood 的解决方案:http: //www.codinghorror.com/blog/2006/01/cleaning-words-nasty-html.html

使用正则表达式。FWIW,很多 RTE 在清理复制和粘贴的内容时使用类似的做法。

于 2012-08-23T03:21:34.977 回答
0

好的,看来 MSWord 确实使用了 Win1252 编码 - 所以我不应该有太多的麻烦来保存复制+粘贴的文本。

用户总是有可能从不同编码的来源复制+粘贴,因此问题仍然存在。我可以在互联网上找到的最佳答案是指创建编码(编码 ANSI = Encoding.GetEncoding(1252)),然后设置“回退” - 无法识别编码的字符的替换字符(ANSI.EncoderFallback = new EncoderReplacementFallback (字符串。空);)。

我从 Stack Overflow 的另一个问题中找到了一个有用的引用:“Windows-1252 代码页与 ISO-8859-1 代码页不同的 0x80 - 0x9F 范围”,这显然是大多数 MSWord 转换问题的根源。

如果有人提出这个问题,他没有使用 1252 编码的数据库(我希望是这种情况,因为 1252 很糟糕)。MSWord 的主要问题是“智能引号”,它会自动将常规引号更改为。这个问题有很多解决方案,只需使用谷歌搜索“智能报价”即可轻松找到。

希望这个问题/答案可以帮助那些遇到微软向我们抛出类似繁琐问题的人。

于 2012-08-23T03:58:35.830 回答