如何使用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”。


这里有一些简单的步骤,通过记事本+ +转换多个文件,而不会搞乱特殊字符(例如变音标记)。

  1. 运行记事本++,然后打开菜单插件 – >插件pipe理器 – >显示插件pipe理器
  2. 安装Python脚本 。 当安装插件时,重新启动应用程序。
  3. select菜单插件 – > Python脚本 – >新脚本
  4. 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将回退到用户的系统默认编码,这在大多数情况下是错误的。