我试图读取一个包含立陶宛字符的XML文件。当我试着看它时会显示一些?????代替。我使用sqlbulcopy将xml文件导入数据库。
如何在编码utf-8中读取XML文件?
代码背后
_id
答案 0 :(得分:2)
文件是 Unicode - �是Unicode替换字符。如果文件是ANSI,则会出现 not 。
使用错误的编码将ANSI源转换为Unicode时,此字符将替换与编码不匹配的任何输入字符。
例如,指定拉丁语(Windows-1252),例如使用File.ReadAllText(somePath, .Encoding.GetEncoding("Windows-1252"))
,并尝试阅读希腊语文本(1253)将用�替换一些希腊字符。
这意味着创建文件时出现问题。这可能是由各种原因造成的,所有这些都与使用错误的代码页在某些时候将数据视为ANSI有关:
varchar
字段替换为nvarchar
字段。 可能的解决方法是通过添加Auto Translate=False
设置来阻止从数据库加载时的字符转换。本质上,这使用应用程序的CultureInfo读取和转换ANSI数据,而不是字段的排序规则。