簡體   English   中英

UTF-8字符編碼麻煩

[英]UTF-8 Character encoding trouble

我正在嘗試實現此功能來為我的頁面處理干凈的url: http : //cubiq.org/the-perfect-php-clean-url-generator

當我像這樣使用它時,它對任何字符都適用:

echo toAscii('åäö');

但是,一旦我從輸入(同樣以“åäö”開頭)形式進行測試,如下所示:

if (isset($_POST['test'])) {
    $test = $_POST['test'];
}
echo toAscii($test);

我收到以下錯誤:注意:iconv()[function.iconv]:在第12行的C:\\ xampp \\ htdocs \\ web \\ bsCMS \\ ysmt \\ testurl.php中的輸入字符串中檢測到非法字符

這是Ascii的完整功能:

setlocale(LC_ALL, 'en_US.UTF8');
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;
}

我的猜測是我必須將字符編碼從表單同步到toAscii函數,但是如何?

檢查是否可行:

在表單所在的HTML中,使用:

<meta http-equiv="Content-type" content="text/html; charset=utf-8" />

設置為默認字符編碼為UTF8。 這將使瀏覽器設置UTF8並在UTF8中的POST中發送變量。

然后在您的PHP中,使用:

header ('Content-type: text/html; charset=utf-8');

要將HTTP通信設置為UTF8。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM