在C#中,我正在读取从文本文件插入SQL语句,然后尝试使用ADO.NET在数据库上执行它们。其中一些查询中包含希腊字符。具体来说,Mu(看起来很时髦)用于微秒(usec)。问题在于问号实际上被插入到数据库中(?sec)。但是,我感觉问题在于读取文本文件,因为调试器也在钻石内部显示问号。我正在使用StreamReader的ReadLine方法。我究竟做错了什么?如何从文件中读取特殊字符?
2
A
回答
4
问题几乎可以肯定的是,当你读取文件时,你使用了错误的编码。你知道什么编码你的文本文件实际上是在?大多数.NET API默认使用UTF-8,但您的文件可能在处于操作系统的默认编码中,该编码由Encoding.Default表示。试试这个:
using (StreamReader reader = new StreamReader(filename, Encoding.Default))
{
...
}
我也强烈建议您尝试得到它的工作而不触及数据库。阅读文件中,然后打印出字符串中的字符在他们的Unicode编码方面:
public static void DumpString(string text)
{
Console.WriteLine("Text: '{0}'", text);
foreach (char c in text)
{
Console.WriteLine("{0}: U+{1:x4}", c, (int) c);
}
}
如果给出正确的结果,然后尝试将其插入到数据库中。这样,如果数据库之后看起来“错误”,那么您知道问题出在您的数据库访问上,而不是文件访问上。
2
您需要检查三两件事:
- 当你打开的StreamReader
- 在数据库服务器上的列类型(nvarchar的,而不是为varchar)
- 在该效果的归类中使用的编码列
如果其中任何一个都是错误的,当您从数据库读取数据时会得到错误的值。
相关问题
- 1. 如何使用C#从rtf文件读取特殊字符?
- 2. 为什么特殊字符从文件中读取为false
- 3. 从无特殊字符的文件中读取
- 4. 如何从文件中读取特殊字符浮子式数字
- 5. 如何读取特殊字符
- 6. FileOpenPicker - 如何读取特殊字符
- 7. 使用Javascript从外部文件读取UTF-8特殊字符
- 8. 正在从JSONP文件正确读取特殊字符
- 9. 用特殊字符在Matlab中读取文本文件
- 10. 存储从文件中读取的文字(不包括特殊字符)
- 11. 击:特殊字符阅读文件
- 12. 如何从文本文件中读取特定的字符串
- 13. 读取.txt文件中的特殊字符 - PHP
- 14. 在c中使用特殊字符读取和写入文件
- 15. 熊猫:读取列中特殊字符的文件
- 16. 用特殊字符读取java中的xml文件
- 17. 从txt文件读取内容到包含特殊字符的字符串
- 18. 无法从PHP中读取的特殊字符(例如“。”)
- 19. 从字符串文件中读取时如何识别特殊的分隔符字符串?
- 20. 如何打印包含特殊字符并从文件中读取的字符串?如何打印没有特殊字符?
- 21. 如何读取名称中包含空格和特殊字符的文件?
- 22. 如何在XML文件中使用特殊字符并正确读取它?
- 23. 如何阅读包含特殊字符的ANSI编码文件
- 24. 在IE8中没有正确地从JSONP文件读取特殊字符
- 25. 蟒蛇从文件中读取特殊字符,并打印出来
- 26. 从带有特殊字符的文件中读取链接列表#
- 27. 从文件中读取prolog在特殊字符上抛出错误
- 28. PHP无法读取具有特殊字符的文件名!
- 29. 有特殊字符PHP麻烦通过读取txt文件flie_get_contents
- 30. 如何读取和写入特殊字符,在xml中,android
这似乎是伎俩。但是,我不确定我是否理解这整个编码的事情。如果另一个具有不同默认编码的用户修改了该文件,然后我尝试用新文件重新运行我的应用程序,该怎么办?它会不再起作用吗?我应该使用Encoding.UTF8吗? – bsh152s 2009-08-13 21:34:42
使用UTF-8是一个更好的主意,是的 - 但你需要确保你始终知道编码的真正含义。你能确保文件将*永远*保存为UTF-8? – 2009-08-13 22:33:25