找到独立于php代码字符集的特定UTF8字符?

时间:2015-04-13 10:40:38

标签: php utf-8 character-encoding

我喜欢匹配一些特定的UTF8字符。就我而言,德国的变形金刚。这是我们的示例代码:

{UTF-8 file}
<?php
$search = 'ä,ö,ü';
$replace = 'ae,oe,ue';
$string = str_replace(explode(',', $search), explode(',', $replace), $string);
?>

此代码为UTF-8。现在,我想确保这将独立于(大多数)使用的代码字符集。

这是我应该去的方式(used UTF-8 check)吗?

{ISO file}
<?php
$search = 'ä,ö,ü';
$search = preg_match('~~u', $search) ? $search : utf8_encode($search);
$replace = 'ae,oe,ue';
$string = str_replace(explode(',', $search), explode(',', $replace), $string);
?>

1 个答案:

答案 0 :(得分:1)

  1. 你应该控制你的源代码被编码为什么,突然让你的编码从你下面改变是非常奇怪的。
  2. 如果 实际上是您想要抵消的合法关注点,那么您甚至不能依赖您的源代码是Latin-1或UTF-8,它可以是任何数字其他编码(虽然在实践中确实拉丁语-1是一个非常普遍的猜测)。因此utf8_encode无法保证解决您的问题。
  3. 要100%不知道您的源代码文件的编码,请将您的字符表示为原始字节:

    $search = "\xC3\xA4,\xC3\xB6,\xC3\xBC"; // ä, ö and ü in UTF-8
    
  4. 请注意,这仍然不能保证编码$string将在哪里,您需要分别知道和/或控制其编码与此问题分开。在某些时候,你只需要确定你使用过的编码,你就不能完全了解它。