A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王继光 高级黑马   /  2012-6-17 16:43  /  2622 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如题, 一个 txt文件中, 存放了一些数据,然后 字母存放的数据导入数据库中没问题, 但中文出现乱码.. 怎么解决??  网上找了很多资料, 不行..

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

10 个回复

倒序浏览
首先数据库的表字段要设置成nchar或者nvarchar,支持中文格式的,记得要n字头的,然后读取文本文件的时候用encoding的utf8格式读取,
StreamReader streamReader = new StreamReader(fileReader, Encoding.UTF8)

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 黑马龙超 于 2012-6-17 17:33 编辑


首先
检查一下数据库字段类型是不是nvarchar,这是Unicode字符,满足中文

其次
用StreamReader的话,在后加一个参数Encoding.default:StreamReader streamReader = new StreamReader(file, Encoding.default)
用File.ReadAllLine,在后也加一个参数File.ReadAllLine(file,Encoding.default)

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
JAVA在网络传输中使用的编码是"ISO-8859-1",故在输出时需要进行转化,而且如果你用的是MySql,MySQL默认编码是latin1,设置MySQL的默认字符集为utf-8,
把涉及到的字符都改为utf-8,应该可以。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
戴伟 发表于 2012-6-17 17:07
首先数据库的表字段要设置成nchar或者nvarchar,支持中文格式的,记得要n字头的,然后读取文本文件的时候用 ...

这个方法 我实验了, 不行.    加入后面的  Endcoding.UTF8 没有报错误, 但 问题依然存在
回复 使用道具 举报
黑马龙超 发表于 2012-6-17 17:31
首先
检查一下数据库字段类型是不是nvarchar,这是Unicode字符,满足中文

在 new的时候  加一个参数, 加你说的 Endcoding.default直接报错  此方法也不行!
回复 使用道具 举报
杨朔 发表于 2012-6-17 20:42
JAVA在网络传输中使用的编码是"ISO-8859-1",故在输出时需要进行转化,而且如果你用的是MySql,MySQL默认编 ...

同学, 你是不是 发错区了,, 这边是 .net 区.  不是 JAVA
回复 使用道具 举报
解决方法如下
1.将数据库字段类型改成nvarchar
2.在中文前加N, insert 表名 values(1,N"中文")

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
吴伟烈 发表于 2012-6-17 22:44
解决方法如下
1.将数据库字段类型改成nvarchar
2.在中文前加N, insert 表名 values(1,N"中文") ...

你这说的 2点不行.   
1.  这个 数据类型肯定是 设置的 nvarchar
2. 在 insert语句中, 我们采用的是 先写 @ 参数,再  加参数的 方法, 用拼接字符串的方法, 这个加N的方法 在指定死字符串的时候可以, 但 如果是 字符串变量要填里面就不行 ...
回复 使用道具 举报
自己查找资料无数. 实验无数,  终于解决  导入中文乱码的问题,  解决方法如下:
StreamReader streamReader =
       new StreamReader(fileStream, System.Text.Encoding.GetEncoding("gb2312")  )


评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
那就是编码的问题了StreamReader srAsciiFromFile =
        new StreamReader("C:\\Temp\\Test.txt",
        System.Text.Encoding.gb2312);

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马