2008-11-03 34 views
3

之前有人建議我做這個谷歌搜索,我有。我只需要更清楚一點代碼和編碼。Codepages和編碼

如果我使用UTF8編碼,並使用一個意大利的代碼頁,然後在法國的代碼頁,這意味着什麼病得到不同的人物,即使字節還沒有改變?

回答

8

喬爾對此有很好的總結:
http://www.joelonsoftware.com/articles/Unicode.html

而且沒有。如果我正確理解你的問題,這並不意味着這一點。 當您將UTF-8轉換爲特定的代碼頁時,可能只有部分字符將被轉換。沒有得到轉換的人會發生什麼情況取決於您如何調用轉換。可能的結果是,無法映射到代碼頁的字符將被轉換爲問號字符。

5

的編碼是僅僅數值和「字符」之間的映射。

US-ASCII數字65映射到字母A,32的空間,並且49到數字 「1」。 (如何呈現這些東西是另一回事。)事實上,UTF-8也是這樣做的!但還有其他值,UTF-8對待ASCII的方式不同。它是一種可變長度編碼,即一個字符可以用1,2,3或4個字節編碼;常用字符通常消耗更少的字節。

純文本文件,包括網頁,被存儲併爲字節序列發送。這些字節應該表示文本內容。軟件應用程序(如文本編輯器和Web瀏覽器)負責在屏幕上顯示這些文件中的信息。通常他們使用庫或OS功能。

如果軟件總是有不同的編碼,創建該文件的軟件,可能會顯示錯誤的字符!

注意,有可能不同的編碼之間進行轉換;但是,如果您轉換爲不包含某個特定字符的編碼,則軟件必須作出選擇而不是使用什麼。這種轉換通常會透明地進行(當您使用特定的編碼保存文件時,無論您鍵入的內容都必須更改爲該編碼)。

0

UTF-8包括從法國和意大利的代碼頁中的所有字符,但語言特定代碼頁不包括所有的每個人的角色。

所以,你可以從每個語言接受輸入,並將其轉換爲UTF-8進行存儲,但你不能肯定的是,如果你把意大利的輸入並顯示爲法式,你會得到正確的字符。

如果可以的話,一路使用UTF-8。

+0

這是爲什麼downvoted?這個問題不是很清楚,但這個答案對我來說似乎是正確的。 – 2008-11-06 19:42:38