【问题标题】:PHP encoding issues with quotes (“„) and other special characters引号 (“„) 和其他特殊字符的 PHP 编码问题
【发布时间】:2012-04-05 18:08:59
【问题描述】:

我在德语网站上遇到了编码问题。 我有一条短信:

„Eröffnungsfeier FIS 高山滑雪 WM 2011“

当这个文本被保存到数据库中时,我得到了?而不是那些引号。

我试过放置

header("Content-Type: text/html; charset=utf-8");
mb_internal_encoding("UTF-8");
setlocale(LC_ALL, 'de_DE.utf-8');

在文件顶部没有成功。

什么时候用过

mysql_set_charset('utf8', $connect);

但是,当在到达第一个字符(如 ö)后在上面插入文本时,其余文本将被删除。

表格字符集和排序规则是 UTF-8。 脚本文件保存为 UTF-8 不带 BOM。

我不知道去哪里找。

【问题讨论】:

  • 看来你做得很好。你能提供一个页面的链接吗?您是否设置了除 utf-8 之外的 http-equiv 元标记?我会检查将文本插入数据库的页面。
  • 您是否在自行管理的 Web 服务器上发布?也许你忘了在这里生成区域设置(编辑/etc/locales.gen,取消注释任何你想要的,然后locale-gen 作为root),它发生在我身上很多次:-)

标签: php mysql encoding utf-8 internationalization


【解决方案1】:

1) 检查数据库的架构 - 文本字段是否设置为存储 utf-8?

2) 听起来页面发布 到此脚本没有发送 UTF-8。它是否有正确的Content-Type 标头? echo urlencode($var) 显示什么? (这是查看您获得的原始字节的巧妙技巧)

【讨论】:

  • 表格字符集为 UTF8。文件有 utf8_general_ci 的排序规则。
  • 用另一种可能的解决方案更新答案
【解决方案2】:

我所做的事情有所帮助。特别是mysql_set_charset('utf8', $connect);。 问题是另一个程序员(utf8_decode)留下了一些不需要的代码。 看起来他无法以其他方式处理 utf-8 编码。

我还发现mysql_set_charset('utf8', $connect); 并不是真正需要的,如果你从一开始就与编码保持一致。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2017-06-03
    相关资源
    最近更新 更多