2012-04-03 68 views
0

我運行與JavaScript的用strtolower()麻煩的Javascript用strtolower(),UFT8和(德國),特殊字符

var s = 'tür'; 
alert(s); 
alert(s.strToLower()); 

應該產生相同的輸出。然而輸出是不同的:

1: tür 
2: tã¼r 

任何建議如何使用strToLower()正確處理uft8特殊?

馬丁

+3

JavaScript沒有'strToLower'函數。 PHP的確如此,並且快速搜索顯示至少有一個人由於某種原因將其移植到了JavaScript中,但JavaScript本身並沒有。 Chrome上的Firefox,Firefox或Opera,Windows 7上的IE9或Safari上的JavaScript函數「toLowerCase」[似乎沒有表現出您提及的行爲](http://jsbin.com/epefab)。 – 2012-04-03 09:55:22

+0

你的頁面被編碼爲utf8,但你的服務器錯誤地告訴它是ISO-8859-1。修復你的標題。 – georg 2012-04-03 09:59:53

+0

標記爲本地化 - 由於JavaScript沒有此功能,並且您沒有回覆評論,所以任何人都無法說出這裏發生了什麼。 – 2012-05-07 21:15:18

回答

3

JavaScript的本地.toLowerCase()方法處理UTF-8就好了:

alert("tür".toLowerCase()); 

您網頁的編碼可能需要設置爲UTF-8頭或meta - 標籤。

+0

你試過了嗎?警報(「İbranice,IRMAK」.toLowerCase()); --JS的本機完全不支持utf-8 – 2012-12-24 01:24:32

+1

取決於瀏覽器和操作系統,但您的示例正如預期的那樣工作:「大多數Unicode軟件除非專門針對土耳其語設置,否則會降低i和大寫字母我到I.因此,大寫,小寫,反之亦然,改變了字母。「 [來源](HTTP://en.wikipedia。組織/維基/虛線\ _and \ _dotless \ _ I) – RikkusRukkus 2012-12-24 09:12:51

0

你有兩個內置的函數來轉換爲小寫:.toLowerCase().toLocaleLowerCase()。兩者都應該適用於您提供的示例,但您需要確保已將源代碼保存爲UTF-8。確切的過程在很大程度上取決於您的IDE或編輯器。

此外,如果您的Web服務器將字符集附加到Content-Type標頭,它不會受到傷害。

0

確保您使用的編碼爲「UTF-8無BOM」(在記事本++選項)工作,並添加文件<META http-equiv="Content-Type" content="text/html; charset=EUC-JP"><head>

我嘗試和作品。

0

你的代碼沒有意義。如果您將tür分配給一個字符串,那麼您總是會收到tür。您可能忽略了代碼中的一個步驟,例如通過AJAX將字符串發送到服務器。要做到這一點,字符串必須進行編碼,通常使用UTF-8,在這種情況下正確的編碼是tür,正如你所看到的。但是,如果服務器使用ISO-8859-1而不是UTF-8,那麼它會認爲你的原始字符串是tür,並且會嘗試按照描述將其小寫爲tã¼r。當前端嘗試將其解釋爲UTF-8時,這會造成問題。解決方案是確保服務器也使用UTF-8。