免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1644 | 回复: 6
打印 上一主题 下一主题

林泥克斯 请进 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-23 10:49 |只看该作者 |倒序浏览
刚才去看了一下 FAQ,看到你的帖子,不知道你是否已经解决,在此回复。
有问题还是在版面发帖讨论吧,不要在 FAQ 里,那里还是保持一些确定的问答比较好。
insert into test (name) values ('運\');
但是在服务器上导入就提示引号不成对。救救我吧。
我要如何改服务器的mysql才能让它使用'運\'的写法?

因为最后一个引号被 \ 符号转义了,所以它会提示你再输入一个单引号,否则是语法错误。
所以正确的语法不可能是'運\',只能是'運\''。

INSERT INTO `test` (`username`) VALUES (0xe9818b),

这个的确是 utf8 的编码

我已经绝望了。编译成utf8的话有很多记录,比如上面的運字导入失败。

你那个用 phpmyadmin 导出的东西是错误的,不能用。
要么你用 phpmyadmin 指定一下用 utf8 来导出数据。

编译成gbk,导了几行就一动不动了,要么就报段错误。

字符集不一致可能会造成乱码进而使语法出错,可以理解得吧。

建议:就在服务器上用 mysqldump 来导出数据,指定用数据库的字符集,得到类似这样的数据:
INSERT INTO `test` (`username`) VALUES (0xe9818b)
你已经做过的。
然后目标数据库也要用 utf8 编码,然后再导入。

试验一下,不行我们再讨论吧。

论坛徽章:
0
2 [报告]
发表于 2006-06-23 19:11 |只看该作者
原来的数据库是4.0.27。不支持utf8的导出方式。

在导入到新的mysql5.0时,已经指定--default-character-set=gbk了。一般的汉字可以正常导入,但我提到的那些特殊的不行。

论坛徽章:
0
3 [报告]
发表于 2006-06-23 19:15 |只看该作者
无法让原来的服务器导出为INSERT INTO `test` (`username`) VALUES (0xe9818b)的格式。不支持utf8唉。只能导出成INSERT INTO `test` (`name`) VALUES ('運\');的格式

而INSERT INTO `test` (`name`) VALUES ('運\');这个格式是无法导入到utf8的库里的。

必须指定为gbk时写成
INSERT INTO `test` (`name`) VALUES ('運');

或指定为utf8时写成
INSERT INTO `test` (`username`) VALUES (0xe9818b)

现在我也没有解决办法。

论坛徽章:
0
4 [报告]
发表于 2006-06-23 19:17 |只看该作者
连让mysql4.0.27导出成INSERT INTO `test` (`name`) VALUES ('運');的格式都做不到。怎么设参数都会带上一个\。如果只是一个字也罢了,可是有很多的字都是这种情况。因为運的编译是0xdf5c,其中0x5c就是\的ascii码

论坛徽章:
0
5 [报告]
发表于 2006-06-23 19:20 |只看该作者
很感谢你的关注。我现在想到的唯一办法就是自己写程序转成utf8的sql语句。但数据量太大,用php写的话每次运行都象死机了一样。

论坛徽章:
0
6 [报告]
发表于 2006-06-24 14:38 |只看该作者
原来的服务器是 MySQL 4.0.27 版本,那你所谓的编译成 utf8 了,是指你的新服务器?
4.0 版本,它应该用的是 latin1 编码吧?登录后输入 \s 或者 show variables like 'char%' 看看有没有信息?我从 4.1 开始接触,之前的不知道,不好意思。
在两个机器上分别做一次 mysqldump,随便找个测试数据库即可,然后你用文本编辑器打开两个 dump 出来的文件,看区别。
新版的在开头应该多了一些字符集的控制,把它修改后拷贝到 4.0 dump 出来的文件上。特别是 set names 那一段,设置为 4.0 的字符集。然后用它来导入到新版的服务器上。这个说起来麻烦了,你自己研究一下吧。
关键就是:把新服务器上对应的数据库和数据表的编码设置成和原来的一样!

论坛徽章:
0
7 [报告]
发表于 2006-06-24 23:42 |只看该作者
有信息。有默认是gbk。但没有utf8。新服务器是默认utf8。用set names gbk的方法虽然可以认出一般的汉字。但双字字的汉字后一字节是0x5c的话就出错了。

因为原服务器没有utf8。导出的数据只能是INSERT INTO `test` (`name`) VALUES ('運\');这一种

而默认为utf8的服务器即使设了set names gbk也只能认INSERT INTO `test` (`name`) VALUES ('運');这一种写法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP