环境:windows XP、mysql、notepad++

mysql语言设置没有问题。由于直接使用insert语句往表中插入数据没有问题,但把insert写入到文件里。通过source .sql的形式插入。就会出现中文乱码。

这时候使用linux环境编写.sql文件。在拿到windows环境运行,没有问题。

由此能够判定是文本编辑器使用的字符编码设置导致的。然后查看notepad++的字符编码设置。发现是UTF-8,而在mysql中设置的编码为gdk,但notepad++下并没有看到gbk编码。

接着就查看了从linux下编写的.sql文件。用notepad++打开。发现编码为ANSI。就索性把自己编写的文件改为ANSI,但已经编写好的文字变为乱码。然后想到一个办法。就是把编写好的文字复制一下。然后把notepad++编码改为ANSI,再把文字复制进去,再在mysql中运行source .sql,果然,问题攻克了。

尽管问题攻克了,但原理还是有些疑惑,希望知道的人能解答一下。难道ANSI编码条件下会保留文字之前的编码?

ps:最新版本号notepad++能够,早一点的版本号就不行

mysql语言设置问题能够參考网上找的以下这篇文章

http://www.cnblogs.com/ndxsdhy/archive/2011/11/19/2255111.html