无法将编码从us-ascii转换为utf-8。什么搞砸了?


2

我正在尝试调试我的网页以外语呈现的垃圾字符。我想在utf-8中使用createpage.php。

me@host:/www/webroot$ file -bi createpage.php
text/x-php; charset=us-ascii
me@host:/www/webroot$ iconv -f us-ascii -t utf-8 createpage.php > createpage_utf8.php
me@host:/www/webroot$ file -bi createpage_utf8.php
text/x-php; charset=us-ascii

rwx对目录rw和文件有渗透。我一定是瞎了 - 我搞砸了什么?是因为ascii是utf-8的子集而我的php没有任何特殊字符(只是我的ini文件include),所以file -bi只报告ascii?

Answers:


2

仅使用纯ASCII字符的文件与UTF8无法区分,因为根据定义,7位ASCII字符在UTF8中以1对1映射。因此,您的“转换”不会做任何事情。


好吧,我觉得有点傻。我想我的问题在于php的PDO模块,因为我的所有表都是用UTF-8编码的。感谢您抽出宝贵时间来回答。
埃舍尔2015年

确保网络服务器正在传递内容是UTF-8编码的,例如通过添加配置行AddDefaultCharset UTF-8
wurtel 2015年

$db->exec("SET CHARACTER SET utf8");直接打开PDO连接到数据库后可能会有所帮助mysql
wurtel 2015年

所有相关表都已经是utf8,网络服务器设置为utf8,http标头也是如此。事实证明,我charset=utf8在实例化PDO对象时忘记了参数。
埃舍尔2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.