Php 字符集转换为带菱形的问号,即使utf-8
我使用的是使用ckeditor的后端。config.js中没有任何更改,因此它会自动将带有重音符号的法语carachters转换为html实体 因此,如果我键入é并检查ckeditor源代码,我会看到Php 字符集转换为带菱形的问号,即使utf-8,php,mysql,character-encoding,Php,Mysql,Character Encoding,我使用的是使用ckeditor的后端。config.js中没有任何更改,因此它会自动将带有重音符号的法语carachters转换为html实体 因此,如果我键入é并检查ckeditor源代码,我会看到é 此字段对应的数据库表是utf8\u general\u ci 页面字符集为: 因此,当我加载前端时,我会收到以下信息: � 如果我在ckeditor源代码中键入é,它将正确显示在页面上,因为它不会将其转换为html实体 现在,如果我通过以下方式关闭ckeditor config.js
é代码>
此字段对应的数据库表是utf8\u general\u ci
页面字符集为:
因此,当我加载前端时,我会收到以下信息:
�
如果我在ckeditor源代码中键入é,它将正确显示在页面上,因为它不会将其转换为html实体
现在,如果我通过以下方式关闭ckeditor config.js中的转换: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方法以及decode。但是移除它们并将其改回原来的工作方式 这是两个问题,所以有两个答案:
您的问题的唯一合乎逻辑的答案是�, 就是在这条线路的某个地方,您没有正确地将其存储为UTF-8,它确实被转换为其他内容
第二个问题,(eval()d代码中的致命错误)您应该发布触发此错误的代码,最好不要对任何远程重要的内容使用eval。尤其不是动态eval()代码,您似乎正在这样做。注意:如果您有错误,特殊字符会导致错误。否则,编辑器通常使用htmlentities(),因此,如果要正确显示内容,必须使用html\u entity\u decode(),� char表示双UTF8编码utf-8是否应该将html实体转换为正确的字符?还是只需要é->é而不需要é;->éUTF-8不能转换成任何东西。html_entity_decode将html实体转换为某些字符集(取决于编码参数)。iconv、mb_convert_编码在ISO-8859-1、UTF-8和许多其他字符集之间进行转换。