+ -
当前位置:首页 → 问答吧 → str_replace的诡异问题

str_replace的诡异问题

时间:2009-06-24

来源:互联网

在gbk编码下,运行下面的代码试试:
[code]$s = '危害';
echo str_replace(':', ':', $s);
[/code]

也就是说,危害 中包含一个中文冒号。

我在一推词汇中项把;换成:
中间发现个乱码,最后发现是危害这个词造成的。

随便提一句,discuz的禁止词过滤我也遇到过。因为一个禁止词,导致某一篇帖子被截取了一部分。

作者: kenvin   发布时间: 2009-06-24

没听明白..

作者: 冯.于安   发布时间: 2009-06-24

都知道是危害了还要危害,中文有很多奇诡的东西,毕竟不是中国人写的东西,对中文的支持多少有点危害

作者: cyhchenz   发布时间: 2009-06-24

呵呵,这个问题有意思,正好我最近也在研究中文编码的问题
“危害”的编码是:  "\xCE\xA3\xBA\xA6"
而中文冒号":"的编码正好是:"\xA3\xBA",英文冒号的编码是"\x3A"
所以中间被替换,成了"\xCE\x3A\xA6",这就成乱码了

作者: gently   发布时间: 2009-06-25

楼上厉害

作者: 木林森   发布时间: 2009-06-26

呵呵,这个问题有意思,正好我最近也在研究中文编码的问题
“危害”的编码是:  "\xCE\xA3\xBA\xA6"
而中文冒号":"的编码正好是:"\xA3\xBA",英文冒号的编码是"\x3A"
所以中间被替换,成了"\xCE\x3A\xA6",这就成 ...
gently 发表于 2009-6-25 11:06

作者: strongability   发布时间: 2009-07-01

str_replace函数不支持多语种编码,自然会出问题。

作者: mark3536   发布时间: 2009-07-01

热门下载

更多