如何纠正错误的文本编码?

时间:2018-06-06 01:43:43

标签: c# sql text unicode encoding

一点背景。我们有可怕的H1B开发系统在工作。它们是50%的SQL,50%的JS,7层类似实体的样板,并处于持续的紧急状态。有些部署需要数小时,因为它们每次都会推送数百个数据库脚本。

作为一个短期修复,我编写了一个程序来通过SqlCommand对象抽取脚本目录。

我遇到的问题是他们将不兼容的代码页粘贴在一起。该文件看起来像ascii但有一些带有unicode空格的行。当它被读入并执行时,它会出现垃圾字符错误。我已经从自动检测切换到默认编码,它在他们做了不同的事情之前工作了大约一天,并且它再次开始出错。

SQL Management Studio也标记了这些奇怪的字符,但仍然设法执行。反正是否迫使文本以某种方式“标准化”?或者强迫它通过SSMS做什么?

1 个答案:

答案 0 :(得分:1)

如果这些文件的实际内容都是在7位ASCII字符集范围内,那么您可以尝试将文件读取为二进制文件。您将要删除遇到的任何前导Unicode BOM,然后跳过任何0的字节(将来自编码为UTF16的文件)。然后将其提供给解码器并声称它是ASCII或UTF-8。

如果字符集比7位ASCII范围宽,那么我认为所有的赌注都是关闭的,你需要解决真正的问题,这听起来像是人的问题而不是技术问题。 / p>