首先保证只使用韩文本地字符集euckr,不使用utf-8 或16
我以telnet模式访问linux服务器上的mysql;
mysql 设置my.cnf默认字符集为euc_kr;
客户端是中文xp环境,打开记事本,写sql脚本,将韩文文字作为字段信息写到记事本中,以unicode方式保存sql脚本;
上传脚本到服务器,
客户端使用crt工具,其中option选择charater 为utf-8(这个charater 选项里没有euckr,只好选了utf-8),字体选韩文字体;
然后
mysql -u** -p** < **.sql ;
selet 该条数据
发现在控制台上可以看到该韩文文字得到正确显示,然后java代码访问jdbc,配置也是euckr,其中xml的配置也是没有问题的(可以确定的);但是java调用中这条数据就是乱码了;
(如果不是按红色部分插入的韩文数据,比如通过下载(字符集仍是euckr)方式从其他服务器下载的韩文数据,此时java访问就是没有问题的,不会乱码)
总得来说,我分析应该是红色部分有问题;因为我的目的是让mysql存储一条韩文编码的数据,可能红色部分中的unicode方式影响了数据库中的数据;
我有几个疑问:
1,my.cnf默认字符集为euc_kr,我想我不管以什么方式插入数据,是不是数据都应该是转成euc_kr来存储呢?
2,是否跟我客户端的字符集有关呢?是不是我应该将pc机环境更改到韩文字符集环境,
然后sql脚本以韩文本地字符集存储(不要以unicode存储),crt工具这个时候的option选择default(此时该default应该是按pc机的字符集默认,也就不再选择utf-8了);
我太菜了,请各位大侠们指教,谢谢
作者: qinxinhun
发布时间: 2008-09-24