字符集转换为带菱形的问号,即使utf-8


Charset converting to question mark with diamond even though utf-8

我使用的是一个使用ckeditor的后端。config.js中没有任何更改,因此它会自动将带有重音的法式焦糖转换为html实体。

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

该字段对应的数据库表为utf8_general_ci

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

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

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

现在,如果我通过:config.entities=false关闭ckeditor config.js中的coverion;

然后键入é并检查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']); ?>

所以我不知道这个插件的开发人员为什么决定使用消毒html方法和解码。但是移除它们并将其改回原来的工作方式。

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

显示问题的唯一合理答案�,是的,在这个过程中,没有正确地将其存储为UTF-8,并且它确实被转换为其他内容。

第二个问题,(eval()的代码中出现致命错误。)您应该发布触发此错误的代码,最好不要对任何非常重要的内容使用eval。尤其是动态eval()代码,您似乎正在执行此操作。