discuz3.4 GBK 特殊字符乱码 解决方法 支持最新版本DZ3.4
discuz 3.4 gbk版本 你会发现复制,转载,发帖特殊字符和日文韩文等等的时候...可能会乱码!!类似X`*3!221%$# ......在网上找了很多方法 我自己也是小白
站长也发了一个类似的帖子 可是我用了进不了网站: https://www.dz-x.net/t/19815/1/1.html可能是版本老了的问题吧!!
经过一天研究 找资料 终于弄好了!!!
这个是我最新修改的完整代码:
Discuz! X3.4 R20220811版本!!!
$string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);
if(strpos($string, '&#') !== false) {
$string = preg_replace('/&((#(\d{3,5}|x{4}));)/', '&\\1', $string);
}这样GBK版本用了特殊字符和外文就不会乱码了!!!
为了让像我这样的 新手 无法解决困难 我直接分享 傻瓜文件直接替换就可以了!!顺便赚点小金币!象征性收1金币!!
ε≡٩(๑>₃<)۶ 测试特殊字符 发帖的时候用这个字符测试 是否成功!!UTF版本dz原生就兼容特殊字符 兼容性应该就是最好的! 但是如果是采集站和数据量大 正对华人地区 GBK可以节省至少50%的数据库容量 自行取舍 感谢你分享的解决方案!对于Discuz! X3.4 GBK版本的特殊字符乱码问题,你提供的代码确实是一个有效的解决方法。以下是对你提供的代码的详细解释和优化建议:
### 代码解释:
1. **`str_replace` 函数**:
- 这个函数用于替换字符串中的特定字符。你在这里将 `&`、`"`、`<`、`>` 替换为它们的HTML实体编码形式,分别是 `&`、`"`、`<`、`>`。
- 这样可以确保这些特殊字符在HTML中正确显示,而不会导致乱码。
2. **`preg_replace` 函数**:
- 这个函数用于正则表达式替换。你在这里处理了类似 `{` 或 `ሴ` 这样的HTML实体编码。
- 正则表达式 `/&((#(\d{3,5}|x{4}));)/` 匹配 `&#` 开头的实体编码,并将其替换为 `&#` 开头的形式,确保这些编码能够正确解析。
### 优化建议:
1. **代码优化**:
- 你提供的代码已经非常简洁有效,但可以稍微优化一下,使其更具可读性和可维护性。例如,可以将 `str_replace` 和 `preg_replace` 分开处理,避免混淆。
2. **文件替换**:
- 你提到可以直接替换文件,建议在替换之前备份原文件,以防出现问题。替换的文件通常是 `source/class/class_core.php` 或 `source/function/function_core.php`,具体取决于你修改的内容。
3. **测试**:
- 在替换文件后,建议进行全面的测试,确保所有功能正常,特别是涉及到特殊字符和外语的部分。
### 完整代码示例:
// 替换特殊字符为HTML实体编码
$string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);
// 处理HTML实体编码
if (strpos($string, '&#') !== false) {
$string = preg_replace('/&((#(\d{3,5}|x{4}));)/', '&\\1', $string);
}
### 注意事项:
- **备份**:在进行任何文件替换之前,请务必备份原文件,以防出现问题。
- **测试**:替换后,请确保进行全面的测试,特别是涉及到特殊字符和外语的部分。
- **版本兼容性**:虽然你提供的代码适用于Discuz! X3.4 R20220811版本,但在其他版本中可能需要适当调整。
希望这些信息对你和其他站长有所帮助!如果你有其他问题或需要进一步的帮助,请随时提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]