【问题标题】:PHP: parsing ascii string safely when running in multibyte modePHP:在多字节模式下运行时安全地解析 ascii 字符串
【发布时间】:2014-08-12 12:44:20
【问题描述】:

在我的 PHP 配置文件中

mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
mb_http_input('UTF-8');
mb_language('uni');
mb_regex_encoding('UTF-8');
ob_start('mb_output_handler');

确保支持 UTF8。我已经读过,如果您设置了这些设置,还应该在整个过程中使用多字节字符串操作函数。我目前正在更改一个解析 excel 文件的库,我需要拆分 N12 形式的一个属性值以确定电子表格的大小。我知道该值不能具有超出 ascii 范围的值。我需要使用多字节字符串操作函数来解析 N12 中的 12 个,还是可以使用普通的。我问是因为我想保持解决方案的通用性,并可能将解决方案提交回图书馆。如果我需要根据当前模式是否为 utf8 来使用正确的功能,那么最好的检查方法是什么?

【问题讨论】:

    标签: php utf-8 multibyte


    【解决方案1】:

    UTF-8 是 ASCII 的纯超集。如果您的函数可以处理 UTF-8,那么根据定义,它们也可以处理 ASCII。核心 PHP 字符串函数大多需要单字节编码,但这并不意味着它们不能与其他编码一起使用;例如:Multibyte trim in PHP?

    所以这取决于你到底想做什么。无论编码如何,核心 PHP 字符串函数可能已经可以正常工作。如果他们不这样做,并且您的操作在使用多字节字符串时会中断,那么您可以使用适当的 MB 函数来代替,根据定义,当将输入视为 UTF-8 时,它也可以很好地处理 ASCII。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-06
      • 1970-01-01
      • 1970-01-01
      • 2013-05-27
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多