ウェブサイトを持っています。FirefoxでjQueryを使用してトルコ語の文字を送信できますが、Internet Explorerはトルコ語の文字を送信しません。メモ帳でソースファイルを見たところ、このファイルのコードページはANSIです。
BOMを使用せずにUTF-8に変換してファイルを閉じると、再度開くとファイルは再びANSIになります。
ANSIからUTF-8にファイルを変換するにはどうすればよいですか?
この部分について:
BOMを使用せずにUTF-8に変換してファイルを閉じると、再度開くとファイルは再びANSIになります。
最も簡単な解決策は、Notepad ++を適切に構成することで問題を完全に回避することです。
Settings
-> Preferences
-> New document
-> Encoding
-> BOMなしのUTF-8
を選択し、Apply to opened ANSI files
を確認してください。
これにより、開かれたすべてのANSIファイルはBOMなしのUTF-8として扱われます。
何が起こっているのかの説明については、この回答の下のコメントを読んでください。
UnicodeとUTF-8について完全に学ぶには、Joel Spolskyの この優れた記事 を読んでください。
たぶんこれはあなたが必要とする答えではないかもしれませんが、私は同様の問題に遭遇したので、私はそれをここに置くことにしました。
500個のxmlファイルをNotepad ++で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()
結局のところ、スクリプトを実行する
ファイルにASCII以外の文字(コードポイント128以上)がない場合、BOMなしのUTF-8はASCIIと同じです(バイトごと)-Notepad ++は間違った推測をします。
あなたがする必要があるのは、文字エンコーディングを指定することですAJAX応答を提供するとき-例えばPHPを使用すると、次のようになります。
header('Content-Type: application/json; charset=utf-8');
重要な部分は、every JS responseで文字セットを指定することです-さもなければIEはユーザーのシステムデフォルトエンコーディングにフォールバックしますが、これはほとんどの場合間違っています。