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

Ker*_*man 63 notepad++ utf-8

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

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

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

jak*_*b.g 67

关于这部分:

当我将它转换为UTF-8而没有bom和关闭文件时,当我重新打开时,该文件再次是ANSI.

最简单的解决方案是通过正确配置Notepad ++来完全避免这个问题.

尝试Settings- > Preferences- > New document- > Encoding- >选择UTF-8无BOM,然后检查Apply to opened ANSI files.

这样,所有打开的ANSI文件将被视为没有BOM的UTF-8.

有关正在进行的解释,请阅读此答案下方的评论.

要完全了解Unicode和UTF-8,请阅读Joel Spolsky 撰写的这篇优秀文章.

  • "应用于打开的ANSI文件"与您的情况相关:当您的文件只包含纯ASCII字符(没有重音符号等),并且您在文件开头没有BOM时,则编辑方式为default将其视为ANSI文件,因为此文件中没有任何内容表明您可能要处理的是UTF-8文件.然而,当你添加,比如说`Ö`并将其保存为UTF-8没有物料清单时,即使文件开头没有物料清单,也不会出现`Ö`后面的两字节组合(0xC396) case)编辑学习"这必须是UTF-8". (2认同)
  • 换句话说,当您将ANSI普通文件保存为UTF-8时,输出与将其保存为ANSI相同.当你打开它时,你必须告诉编辑*将它视为UTF-8.对于*be*UTF-8的文件,它必须以BOM开头,或包含某些双字节序列.在ANSI文件中输入`Ö`时编辑器的行为取决于配置. (2认同)

Jun*_*ami 41

也许这不是你需要的答案,但我遇到了类似的问题,所以我决定把它放在这里.

我需要通过Notepad ++将500 xml文件转换为UTF8.为什么选择Notepad ++?当我使用选项"在UTF8中编码"(许多其他转换器使用相同的逻辑)时,它搞砸了所有特殊字符,因此我必须明确地使用"转换为UTF8".


这里有一些简单的步骤,可以通过Notepad ++转换多个文件,而不会弄乱特殊字符(例如变音符号).

  1. 运行Notepad ++,然后打开菜单Plugins-> Plugin Manager-> Show Plugin Manager
  2. 安装Python脚本.安装插件后,重新启动应用程序.
  3. 选择菜单插件 - > Python脚本 - >新脚本.
  4. 选择其名称,然后通过以下代码:

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()
Run Code Online (Sandbox Code Playgroud)

毕竟,运行脚本

  • 好的解决方案 由于我使用notepad ++本地化,我不得不翻译'编码'和'转换为UTF-8'选项,很奇怪. (2认同)
  • 嗨flexwang,你应该从Notepad ++运行它 (2认同)
  • 不再工作了:( (2认同)

Pis*_*3.0 15

如果没有非ASCII字符(码点128及以上)在您的文件,UTF-8无BOM是一样的ASCII,逐字节 - 所以记事本++会猜错.

您需要做的是在提供AJAX响应时指定字符编码- 例如,使用PHP,您可以这样做:

header('Content-Type: application/json; charset=utf-8');
Run Code Online (Sandbox Code Playgroud)

重要的是用每个 JS响应指定字符集- 否则IE将回退到用户的系统默认编码,这在大多数情况下都是错误的.