Windows 服务器,MySQL 设置是 utf8_general_ci。存储中英文混合的 $url
字符串,比如 http://example.com/?str=001,中文
。
使用 mb_detect_encoding($url, array('ASCII', 'GB2312', 'GBK', 'UTF-8'))
得到编码是 CP936
。
使用 mb_convert_encoding($url, 'UTF-8', $encode)
无效。
Google 到 cnblog 上一个方法。
使用 iconv('UTF-8', 'latin1', $url)
报 Detected an illegal character in input string
。
使用 iconv('UTF-8', 'latin1//IGNORE', $url)
执行后发现中文丢失。
以上各个过程中 print_r($url)
都是正常输出的。但将生成的 $url
在浏览器中,中文获取乱码。
目前完全卡住,求大佬们搭救,在线等。
1
nekoyaki 2018-12-12 14:39:48 +08:00 1
做个 urlencode 再往里存试试?
|
4
Jex 2018-12-12 15:24:22 +08:00 3
解决字符编码问题的方法很简单,不要看 print/console.log 之后的东西然后瞎猜,而是要直接看原始的 Binary,比如在 PHP 中用 bin2hex 再 print, 这样你就能知道原始的 Encoding 到底是什么,转换后的结果到底对不对。如果确认原始的 Encoding 无误,那么你就能肯定不是原始字符编码的问题,而是你输出环境的问题。
好吧,直接说结果吧,对于你这种情况,有可能就是输出的 HTML 页面设置的 Charset 不是 UTF-8。 |
6
wxl1380610 2018-12-12 15:44:39 +08:00 1
这个是 gbk , 还有 , 存原始二进制
|