即使utf-8,字符集也会转换为带钻石的问号

时间:2013-07-09 14:09:08

标签: php mysql character-encoding

我使用的是使用ckeditor的后端。 config.js中没有任何变化,因此它会自动将带有重音符号的法语carachters转换为html实体。

因此,如果我输入é并检查ckeditor来源,我会看到é

此字段对应的数据库表是utf8_general_ci

页面字符集为:<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

所以当我加载前端时,我会收到以下内容:

如果我在ckeditor源中键入é,它会在页面上正确显示,因为它没有将其转换为html实体。

现在如果我关闭ckeditor config.js中的coversion:config.entities = false;

然后键入é并检查ckeditor源,它保持为é所以我认为这样可行,

然而,在加载前端时,我收到错误:

Parse error: syntax error, unexpected T_STRING in C:\wamp\www\site\includes\functions\clean_code.php(162) : eval()'d code on line 34

我可以在这里粘贴clean_code.php代码,但我认为保持整个网站不变是很重要的。所以我有点卡住了。我该怎么办?

编辑:

好的,所以我跟踪了一个修改,它用以下方法回应了描述:

  echo stripslashes( tep_sanitize_html( html_entity_decode( stripslashes( $product_info[ 'products_description' ] ) ) ) );

香草的做法是:

<?php echo stripslashes($product_info['products_description']); ?>

所以我不确定为什么这个插件的开发者决定使用sanitize html方法以及解码。但删除它们并将其更改回原始方式有效。

1 个答案:

答案 0 :(得分:0)

这是两个问题,所以有两个答案:

显示problem问题的唯一合理答案是,在某个地方,你正确地将其存储为UTF-8并且它确实被转换为其他东西。

第二个问题,(eval()代码中的致命错误。)你应该发布触发此错误的代码,并且最好甚至不使用eval来处理任何远程重要的事情。尤其不是你似乎正在做的动态eval()代码。