0

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

所以如果我输入 é 并检查我看到的 ckeditor 源é

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

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

所以当我加载前端时,我收到以下信息:

�</p>

如果我在 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 方法以及解码。但是删除它们并将其更改回原来的工作方式。

4

1 回答 1

0

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

显示问题的唯一合乎逻辑的答案是,沿着这条线的某个地方,您没有正确地将其存储为 UTF-8,它确实被转换为其他东西。

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

于 2013-07-09T14:21:02.860 回答