作者maplenote (猫奴一只)
看板PHP
标题Re: [请益] 中文字变"问号"了
时间Sat Jan 26 18:00:17 2013
会影响编码的有好几个环节,原本想说私底下回原po就好
不过或许po出来我才知道我的想法是不是错的
(有错的话 请指教><)
我把会整个过程视为加密与解密
写入时:(就像加密)
1.填写网页的原始档编码
2.浏览器开启填写页面的编码
3.连资料库的编码
4.资料库内记录的编码
读取时:(其实跟上面一样,就像解密)
4.资料库的编码
3.连资料库的编码
2.浏览器开启页面的编码
1.显示资料页面的原始档编码
如果写入跟读出的每个步骤
1对1、2对2、3对3、4对4都相同,显示就会相同
但是1~4的编码 不一定要一样
1~4的编码不同只会影响到某些字在其中一个编码不存在时,
存进资料库时那几个字会变乱码
所以!
只用phpmyadmin写入及读出,显示就会是正常的
只用自己写的php页面写入及读出,应该显示还是正常的(除非连线设定档案分开写)
若之後调整了中间的编码
旧资料只有重新捞出做转码後写入 或者 重新输入 才有可能正常显示
而原po的资料我不晓得是从哪个页面输入的
总之phpmyadmin显示正常 自己的php页面乱码代表两边设定有不同
※ 引述《jscorpio1 (我 天蠍)》之铭言:
: 问题:从资料库读出的中文字变成问号,但是在phpmyadmin里显示正常
: 问题画面 http://ppt.cc/rYWP
: 相关设定:
: 1. mysql设定为utf8_unicode_ci
: 2. php档存为utf8
: 3. mysql_query("set names 'utf8'")
这一项 phpmyadmin 也要一致
我对phpmyadmin不熟...大概是检查 config.inc.php 内有没有设定
搜看看有没有 iso-8859-1 或 big5的设定
把它都改为 utf8_unicode_ci
我的设定档里有
// Default connection collation (used for MySQL >= 4.1)
$cfg['DefaultConnectionCollation'] = 'utf8_unicode_ci';
若是没有应该能自己新增进去吧...
: 4. header ('Content-type:text/html; charset=utf-8')
: 5. browser的预设编码也是utf8
phpmyadmin也要一致
若检查浏览器页面不是utf8
有些版本的phpmyadmin在登入的时候 选择语系有分big5或utf8,应该是这个影响的
但是像我的中文语系就没有分@@
: 也google到了 http://www.mrmu.com.tw/2011/01/09/php-mysql-utf8-unicode/
: 都照做了,但还是无法解决
: 但是直接key在php档里的中文字都能正常显示,若将browser改为big5则会变成乱码
: 请问还有什麽方法可以try的吗?
若是真的phpmyadmin的问题
你修改完後 phpmyadmin 内的资料显示也会是乱码
(就跟你的php页面显示一样)
别太紧张^^" 这才是正确的!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.61.241.210