假设我用UTF-8编码我的文件.
在PHP脚本中,将比较一个字符串:
$string="ぁ"; $string = utf8_encode($string); //Do i need this step? if(preg_match('/ぁ/u',$string)) //Do if match...
如果您阅读了
原文链接:https://www.f2er.com/php/134946.htmlutf8_encode
的手册条目,它会将ISO-8859-1编码的字符串转换为UTF-8.函数名称是一个可怕的误称,因为它表明某种必要的自动编码.事实并非如此.如果您的源代码保存为UTF-8并且您将“あ”分配给$string,则$string保存以UTF-8编码的字符“あ”.无需采取进一步行动.实际上,尝试将UTF-8字符串(错误地)从ISO-8859-1转换为UTF-8会使其变得混乱.
为了详细说明,您的源代码将被读取为字节序列. PHP用ASCII解释对它很重要的东西(所有关键字和运算符等). UTF-8向后兼容ASCII.这意味着,所有“普通”ASCII字符都使用ASCII和UTF-8中的相同字节表示.所以PHP被“解释为”,无论它是否应该以ASCII或UTF-8保存.引号之间的任何内容,PHP只是作为文字位序列.因此PHP将您的“あ”视为“11100011 10000001 10000010”.它并不关心引号之间究竟是什么,它只是按原样使用它.