如何使用Notepad ++将ANSI编码文件转换为UTF-8?
我有一个网站,我可以用Firefox中的jQuery发送我的土耳其字符,但Internet Explorer不会发送我的土耳其字符。 我在记事本中查看了我的源文件,这个文件的代码页是ANSI。
当我将它转换为没有BOM的UTF-8并closures文件时,当我重新打开时,该文件又是ANSI。
我如何将我的文件从ANSI转换为UTF-8?
关于这个部分:
当我把它转换成UTF-8而没有bom和closures文件时,当我重新打开时,该文件又是ANSI。
最简单的解决scheme是完全通过正确configurationNotepad ++来避免这个问题。
尝试Settings
– > Preferences
– > New document
– > Encoding
– >select没有BOM的UTF-8
,然后selectApply to opened ANSI files
。
这样所有打开的ANSI文件将被视为没有BOM的UTF-8。
为了解释发生了什么,请阅读下面的评论。
要充分了解Unicode和UTF-8,请阅读Joel Spolsky 撰写的优秀文章 。
也许这不是你需要的答案,但是我遇到了类似的问题,所以我决定把它放在这里。
我需要通过Notepad ++将500个xml文件转换为UTF8。 为什么记事本++? 当我使用选项“UTF8编码”(许多其他转换器使用相同的逻辑),它搞乱了所有的特殊字符,所以我不得不明确使用“转换为UTF8”。
这里有一些简单的步骤,通过记事本+ +转换多个文件,而不会搞乱特殊字符(例如变音标记)。
- 运行记事本++,然后打开菜单插件 – >插件pipe理器 – >显示插件pipe理器
- 安装Python脚本 。 当安装插件时,重新启动应用程序。
- select菜单插件 – > Python脚本 – >新脚本 。
- select它的名字,然后通过下面的代码:
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字符(codepoints 128和以上),没有BOM的UTF-8与ASCII字节相同,所以Notepad ++会猜错。
你需要做的是在服务AJAX响应时指定字符编码 – 例如使用PHP,你可以这样做:
header('Content-Type: application/json; charset=utf-8');
最重要的部分是用每个 JS响应指定字符集 – 否则IE将回退到用户的系统默认编码,这在大多数情况下是错误的。