首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PHP中使用UTF-8字符集-是否需要mb函数?

在PHP中使用UTF-8字符集-是否需要mb函数?
EN

Stack Overflow用户
提问于 2009-11-17 03:55:25
回答 7查看 3.9K关注 0票数 5

在过去的几天里,我一直在努力将我的PHP代码库从latin1转换为UTF-8。我读到过两种主要的解决方案,一种是用内置的多字节函数替换单字节函数,另一种是在php.ini文件中设置mbstring.func_overload值。

但是后来我在堆栈溢出上遇到了UTF线程,其中thomasrutter的post似乎表明this -8实际上并不需要多字节函数,只要脚本和字符串文字是用UTF-8编码的。

我还没有发现任何其他证据,无论这是真的还是假的,如果事实证明我不需要将我的代码转换为mb_functions,那么这将是一个实时的节省!有没有人能解释这件事?

EN

回答 7

Stack Overflow用户

发布于 2009-11-17 04:17:10

它们不是“必要的”,除非您正在使用任何functions they replace (很可能至少使用其中的一个),或者显式地需要扩展的一个特性,比如HTTP handling

在实现UTF8兼容时,我总是使用PHP UTF-8 Cheatsheet,但增加了一项内容:需要更新PCRE模式以使用u修饰符。

票数 4
EN

Stack Overflow用户

发布于 2009-11-17 04:19:44

只要检查或修改多字节字符串,就需要使用mb_*函数。一个非常快速的例子说明了原因:

代码语言:javascript
复制
$str = "abcžđščćöçefg";
mb_internal_encoding("UTF-8");

echo "strlen: ".strlen($str)."\n";
echo "mb_strlen: ".mb_strlen($str)."\n";

这将打印出来:

代码语言:javascript
复制
strlen: 20
mb_strlen: 13
票数 3
EN

Stack Overflow用户

发布于 2009-11-17 04:10:44

thomasrutter表示search不需要特殊处理。例如,如果需要检查UTF8字符串的长度,我不明白如何使用普通的strlen()来实现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1744473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档