C# 导入文件时字符集的处理问题

来源:互联网 发布:网络劫持怎么修复 编辑:程序博客网 时间:2024/06/05 10:39
问题描述:
使用WEB导入文本文件时出现一个问题。我的导入过程是这样的,
1. 客户端得到文件上传到服务器中,
2. 把文件的内容写到数据库的临时表中,
3. 取出临时表的数据进行折分,
因为文本文件中他包含有汉字,存储到数据库中是以nvarchar 存储的,所以出现文本文件中一行的字符数是100个,但用C#读同的字符的长度就没有100了,变为小于100了,这样的话,根据对方提供的格式进行截取数据,就变的不准确了,经过分析,认为这是字符集的问题,但是怎么样把C#读出的字符变为100呢?或者文本文件中存储到数据库的时候,这个字段的类型让数据存储为双字节的方式。后一种方式经过测试用varchar 存储,但是C#读出的字符数还是小于100,所以就只有用前一种方式进行处理了,
解决问题方式:
在C#代码增加以下代码,就可以解决取数不准确问题。
private static Encoding encoding = Encoding.Default;
private  Byte[] bytes = encoding.GetBytes(字符串);
 
public static string SubstringByte(Byte[] bytes, int index, int length)
{              
return encoding.GetString(bytes, index, length);
}
结果分析:
以上的处理说明了一个问题,如果在处理汉字的问题上,最终还是要用转换为字节,否则用SubString将会出现问题。