如何使用Notepad ++将ANSI编码文件转换为UTF-8?

时间:2011-08-31 11:05:30

标签: utf-8 notepad++

我有一个网站,我可以在Firefox中使用jQuery发送我的土耳其语字符,但Internet Explorer不会发送我的土耳其字符。 我在记事本中查看了我的源文件,这个文件的代码页是ANSI。

当我将其转换为没有BOM的UTF-8并关闭文件时,当我重新打开时,该文件又是ANSI。

如何将我的文件从ANSI转换为UTF-8?

3 个答案:

答案 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 ++转换多个文件,而不会弄乱特殊字符(例如变音符号)。

  1. 运行Notepad ++,然后打开菜单插件 - >插件管理器 - >显示 插件管理器
  2. 安装 Python脚本。安装插件后,重新启动 应用
  3. 选择菜单插件 - > Python脚本 - >新脚本
  4. 选择其名称,然后通过以下代码:
  5. <强> 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将回退到用户的系统默认编码,这在大多数情况下都是错误的。