我有一个网站,我可以在Firefox中使用jQuery发送我的土耳其语字符,但Internet Explorer不会发送我的土耳其字符。 我在记事本中查看了我的源文件,这个文件的代码页是ANSI。
当我将其转换为没有BOM的UTF-8并关闭文件时,当我重新打开时,该文件又是ANSI。
如何将我的文件从ANSI转换为UTF-8?
答案 0 :(得分:67)
关于这部分:
当我在没有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的this excellent article。
答案 1 :(得分:41)
也许这不是你需要的答案,但我遇到了类似的问题,所以我决定把它放在这里。
我需要通过Notepad ++将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()
毕竟,运行脚本
答案 2 :(得分:14)
如果您的文件中没有非ASCII字符(代码点128及以上),则没有BOM的UTF-8与ASCII相同,字节为字节 - 因此Notepad ++会猜错。
您需要做的是在提供AJAX响应时指定字符编码 - 例如使用PHP,你可以这样做:
header('Content-Type: application/json; charset=utf-8');
重要的是使用每个 JS响应来指定字符集 - 否则IE将回退到用户的系统默认编码,这在大多数情况下都是错误的。