作者linces ( MIT I'm comming!)
看板PHP
标题[请益] php to mysql 中文.....
时间Thu Jun 14 20:46:18 2012
爬很久的文...还是无解
----------------------------------------------
目前从资料库中抓出来中文是没有问题的 看得到中文
问题卡在
用php 执行 INSERT 这个动作
mysql_query("INSERT INTO `tableA` (`a`) VALUES ('中文')");
执行之後会是空白(或许是..看不到的乱码) 在phpmyadmin中就是看不到值
但用phpmyadmin 内建的sql 则能成功插入 "中文" 两字
同一个网站 另一个插入功能语句
mysql_query("INSERT INTO `tableB` (`b`) VALUES ('中文')");
(原本会出现乱码 已爬文解决)
我在想会不会是透过 flash urlrequest的问题?
但是 用error_log可以log到正确的query string:
"INSERT INTO `tableA` (`a`) VALUES ('中文')"
也就是说...问题应该是php 这段
对了!编码确定都是utf8
collation 则是 utf8_general_ci
不晓得各位有什麽看法??
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.37.98.153
1F:→ buganini:档案编码、SET NAMES 06/14 21:56
似乎有点头绪了
这原本的资料 是用 ISO-8895-1 编码
而mysql接受的是utf8
但另一个问题来了...
要如何把以ISO-8895-1编码的中文 转换成 utf 编码的中文呢?
我查到用utf8_encode
转出来的结果是乱码@@
※ 编辑: linces 来自: 114.37.98.153 (06/14 22:16)
2F:→ buganini:中文怎麽会是ISO-8859-1编码… 06/14 22:19
3F:→ buganini:先确定你的档案是存成UTF-8,mysql连线後有执行 06/14 22:20
4F:→ buganini:SET NAMES UTF8,其他的再说 06/14 22:20
嗯嗯~很怪
我用 mb_detect_encoding($s, "ISO-8859-1, UTF-8, BIG5");
她return 的值就是 ISO-8859-1
用notepad开可以看到中文
用ultraedit有时候是乱码...
看起来应该是送来的值没有预先编码
有办法在PHP 救回吗?
※ 编辑: linces 来自: 114.37.98.153 (06/14 23:41)
5F:→ buganini:ISO-8859-1的定义包含\x1~\xff 也就是说任何binary 06/15 00:01
6F:→ buganini:string都可以当作iso-8859-1 (也就是为何有人会用latin1 06/15 00:01
7F:→ buganini:在mysql里面存UAO的原因) 06/15 00:01
8F:→ buganini:找个可以选择编码的editor或乾脆用browser就可以检查了 06/15 00:02
呵呵呵~解决了~开心^^
原因是.........很蠢我承认
我用url传中文参数
忘了加 urlencode....
※ 编辑: linces 来自: 114.37.98.153 (06/15 00:16)
9F:→ linces:不论如何~还是感谢楼上的方法 ~ ^^ 06/15 00:18