无法将UTF-8'ø'转换为ASCII

时间:2015-09-08 18:56:12

标签: php encoding utf-8 ascii

函数转换所有其他字符,只是'ø'不是UTF-8字符,所有其他字符,如“Ч,Č,Ć,Đ,Š,Ž,Ђ,Ж,Љ”等正常转换为ASCII ...

这是我使用的功能:

function toAscii($str, $replace=array(), $delimiter='-') {
    if( !empty($replace) ) {
        $str = str_replace((array)$replace, ' ', $str);
    }

    $clean = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
    $clean = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $clean);
    $clean = strtolower(trim($clean, '-'));
    $clean = preg_replace("/[\/()_|+ -]+/", $delimiter, $clean);
    return $clean;
}

我需要它以ascii为url。

1 个答案:

答案 0 :(得分:0)

iconv"音译为ascii"功能不可靠。从任意unicode代码点到ascii都没有任何通用音译或音译。没有unicode标准说明如何做(尽管有一个草稿,它被放弃为不成功)。所以,无论如何,没有可靠的方法来做到这一点,或者iconv功能不是一个。它是怎么回事。

正如其他人所评论的那样,有一种标准方法可以将unicode放入URL中。尝试将任意unicode代码点音译为ascii不太可能是解决问题的正确方法;即使是正在发生的音译,你也可能失去意义。