2013-02-21 37 views
1

我測試過使用PHP setlocale功能strtolower我的標準UTF-8編碼和波蘭字母。
不幸的是,我的經驗告訴我,那些功能不喜歡UTF-8
在Windows中,我無法使用它。
那麼,事實證明,我不能在我的主機服務器上使用Linux cp15.vpsi.pl 2.6.32-220.4.1.el6.x86_64 x86_64都沒有。 我在該系統上使用了locale -a命令,以發現我必須使用pl_PL.UTF-8並且setlocale函數接受了它。
那麼,strtolower函數只能重複我輸入的波蘭大寫字母的字符串不變,發現它很難將波蘭字母轉換爲小寫字母。
pl_PL.iso88592不會發生此問題。
據我所知,UTF-8是最好的編碼,尤其是當你使用WordPress。 UTF-8僅適用於非常複雜的計算機系統嗎?PHP setlocale不允許像strtolower這樣的PHP函數爲UTF-8正常工作?

回答

1

http://php.net/manual/en/function.strtolower.php

strtolower();並不波蘭字符

<?php strtolower("mĄkA"); ?>

工作將返回:馬卡

最佳的解決方案 - 使用mb_strtolower()

<?php mb_strtolower("mĄkA",'UTF-8'); ?>

將返回:馬卡

1

使用mb_strtolower()功能。這將工作。

+1

好的解決方案。謝謝。那麼,setlocale不能只在類似功能的strtolower上工作。大小寫不敏感的函數如** str_ireplace **怎麼樣? – 2013-02-22 08:36:47

+1

您可以在這裏找到多字節字符串函數的完整列表:http://www.php.net/manual/en/ref.mbstring.php – 2013-02-22 08:50:34

+1

是的,我已經瀏覽過它們。謝謝你。 :) – 2013-02-22 19:25:57

0

mb_函數很好。可惜我的php.exe(用於win7中的cmd.exe - cli)沒有這個模塊,並且無法識別這些函數。

0
setlocale(LC_CTYPE, 'pl_PL.UTF-8'); 
    $str = iconv('utf-8', 'ascii//translit', $str); 
    $str = strtolower($str); 

iconv