- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使我的 PHP 站点支持 Unicode。我想知道是否有人对 mbstring.func_overload
设置有经验,它用多字节等价物 (mb_strlen
)。 PHP 手册页上没有任何评论。
有什么我应该注意的潜在问题吗?在任何情况下调用多字节版本都是一个坏主意?
我想一个例子是处理加密的函数,因为它们可能期望处理字节串,而不是字符串。
此外,手册页包含一条注释:“不建议在每个目录上下文中使用函数重载选项,因为尚未确认它在生产环境中是否足够稳定,并且可能导致未定义的行为。 "
这是否意味着它在每个目录上下文中不稳定,或者它通常不稳定?措辞不明确。
最佳答案
我的回答是:绝对不会!
问题在于,一旦 str* 函数重载,就没有简单的方法来“重置”它们。
在一段时间内,这可以很好地用于您的项目,但几乎可以肯定的是,您会遇到使用字符串函数的外部库,例如,实现二进制协议(protocol),并且它们会失败。它们会失败,您将花费数小时试图找出它们失败的原因。
当你发现它是mbstring.func_overload
之后,你就没有太多选择了。您可以在每次调用外部库时将 mbstring.internal_encoding
ini_set 设置为每个字符一个字节的编码,然后立即将其设置回来,但是如果您的库对您的应用程序进行回调,它将只是把事情搞砸了。
另一种选择是手动调整库,将所有 str* 函数更改为其对应的 mb_string 并将每个字符一个字节作为编码参数传递。然而,这也不是一个好主意,因为您失去了轻松更新外部设备的能力,并且还可能导致一些性能问题。
所以,再次声明,不要使用 func_overload
。如果您使用多字节字符串,请使用适当的 mb_ 函数。
关于php - 我应该使用多字节重载 (mbstring.func_overload) 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/222630/
我正在使我的 PHP 站点支持 Unicode。我想知道是否有人对 mbstring.func_overload 设置有经验,它用多字节等价物 (mb_strlen )。 PHP 手册页上没有任何评论
我是一名优秀的程序员,十分优秀!