如何从MSWord过滤数据库中奇怪格式的数据?

时间:2012-08-23 03:13:32

标签: c# encoding ms-word

我们的编程团队目前使用的是使用Win1252编码的数据库,但数据库在本地过滤掉不良数据方面也不是很好。

我们程序的最终用户通常只是将他们的信息从MSWord复制+粘贴到我们的数据库中,导致我们的数据库中出现的各种时髦字符偶尔也无法被解释。

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

类似地,我的意思是将奇怪的双引号翻译成典型的“。”。

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

好吧,似乎MSWord确实使用了Win1252编码 - 所以我不应该为保存复制的+粘贴文本而烦恼太多。

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

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

如果有人来到这个问题,谁不使用1252编码的数据库(我希望1252是可怕的情况)。 MSWord的主要问题是“智能引号”,它会自动更改常规报价。有很多解决这个问题的方法,只需谷歌搜索“智能引号”即可轻松找到。

希望这个问题/答案可以帮助人们解决微软抛出的类似繁琐问题。