我有一個網站,我可以用Firefox中的jQuery發送我的土耳其字符,但Internet Explorer不會發送我的土耳其字符。 我在記事本中查看了我的源文件,並且此文件的代碼頁是ANSI。如何使用Notepad ++將ANSI編碼文件轉換爲UTF-8?
當我將它轉換爲沒有BOM的UTF-8並關閉文件時,當我重新打開時,該文件又是ANSI。
如何將我的文件從ANSI轉換爲UTF-8?
我有一個網站,我可以用Firefox中的jQuery發送我的土耳其字符,但Internet Explorer不會發送我的土耳其字符。 我在記事本中查看了我的源文件,並且此文件的代碼頁是ANSI。如何使用Notepad ++將ANSI編碼文件轉換爲UTF-8?
當我將它轉換爲沒有BOM的UTF-8並關閉文件時,當我重新打開時,該文件又是ANSI。
如何將我的文件從ANSI轉換爲UTF-8?
對此部分:
當我將其轉換爲UTF-8無BOM和關閉文件,該文件又是ANSI,當我重新打開。
最簡單的解決方案是完全通過正確配置Notepad ++來避免此問題。
嘗試Settings
- >Preferences
- >New document
- >Encoding
- >選擇UTF-8
沒有BOM,檢查Apply to opened ANSI files
。
這樣,所有打開的ANSI文件將被視爲沒有BOM的UTF-8。
要了解發生了什麼事,請閱讀下面的評論。
要充分了解Unicode和UTF-8,請閱讀Joel Spolsky的this excellent article。
這幫了我很多。謝謝。我不明白這種行爲。因爲我打開了一個現有的文件而不是一個新文件。 –
「適用於打開的ANSI文件」與您的情況相關:如果您的文件僅包含純ASCII字符(不帶重音符號等),並且在文件開頭沒有BOM,則編輯器默認情況下將它視爲ANSI文件,因爲此文件中沒有任何內容表明您可能想要處理的是UTF-8文件。但是,如果添加了'Ö'並將其另存爲UTF-8(不包含BOM),即使文件開頭沒有BOM,也不會出現背後的雙字節組合(此處爲0xC396)情況)編輯學習「這必須是UTF-8」。 –
換句話說,將ANSI Plain文件保存爲UTF-8時,輸出與保存爲ANSI時相同。當你打開它時,你必須告訴編輯*把它當作UTF-8。對於要*爲* UTF-8的文件,它必須以BOM開頭或包含某些雙字節序列。在ANSI文件中輸入Ö時編輯器的行爲取決於配置。 –
如果您的文件中沒有非ASCII字符(codepoints 128或更高),則沒有BOM的UTF-8與ASCII字節相同 - 因此Notepad ++會猜錯。
您需要做的是在提供AJAX響應時指定字符編碼- 例如,用PHP,你可以這樣做:
header('Content-Type: application/json; charset=utf-8');
的重要組成部分,是與每 JS響應指定字符集, - 否則IE會回落到用戶的系統默認編碼,這是大多數的時間是錯誤的。
爲什麼不是這樣公認的答案?這是解釋發生的唯一答案,以及問題的真正解決方案。 – SinistraD
也許這不是你需要的答案,但是我遇到了類似的問題,所以我決定把它放在這裏。
我需要通過記事本++將500個xml文件轉換爲UTF8。爲什麼Notepad ++?當我使用選項「UTF8編碼」(許多其他轉換器使用相同的邏輯)時,它會搞亂所有特殊字符,所以我必須明確地使用「轉換爲UTF8」。
這裏有一些簡單的步驟,通過Notepad ++轉換多個文件而不會搞亂特殊字符(例如變音符號)。
convertToUTF8.py
import os
import sys
from Npp import notepad # import it first!
filePathSrc="C:\\Users\\" # Path to the folder with files to convert
for root, dirs, files in os.walk(filePathSrc):
for fn in files:
if fn[-4:] == '.xml': # Specify type of the files
notepad.open(root + "\\" + fn)
notepad.runMenuCommand("Encoding", "Convert to UTF-8")
# notepad.save()
# if you try to save/replace the file, an annoying confirmation window would popup.
notepad.saveAs("{}{}".format(fn[:-4], '_utf8.xml'))
notepad.close()
畢竟,運行腳本
你可以使用我寫了這個工具我也遇到了同樣的問題,並且走出了自己的路。 https://github.com/srcnalt/ANSI-to-UTF8 – Sarge