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 做个 urlencode 再往里存试试?
|
4
Jex 2018-12-12 15:24:22 +08:00 解决字符编码问题的方法很简单,不要看 print/console.log 之后的东西然后瞎猜,而是要直接看原始的 Binary,比如在 PHP 中用 bin2hex 再 print, 这样你就能知道原始的 Encoding 到底是什么,转换后的结果到底对不对。如果确认原始的 Encoding 无误,那么你就能肯定不是原始字符编码的问题,而是你输出环境的问题。
好吧,直接说结果吧,对于你这种情况,有可能就是输出的 HTML 页面设置的 Charset 不是 UTF-8。 |
6
wxl1380610 2018-12-12 15:44:39 +08:00 这个是 gbk , 还有 , 存原始二进制
|