Notepad++ 记事本++;打开包含破折号字符的文件

Notepad++ 记事本++;打开包含破折号字符的文件,notepad++,Notepad++,我有两个内容相同的文件。一个文件具有XML扩展名,另一个文件具有txt扩展名。这两个文件都用ASCII编码。它们都包含En破折号字符(十六进制值96) 当我打开扩展名为txt的文件时,该文件将按预期显示。En破折号正确显示为破折号 但是,当我打开XML文件时,En-dash字符以倒转的前/背景色显示为x96 xml文件的这种显示是否与以下事实有关:它是ASCII编码的文件,但文件包含: 为什么字符不能正确显示?当我对XML文件进行十六进制编辑时,我看到En破折号是十六进制值96,它仍然在扩展A

我有两个内容相同的文件。一个文件具有XML扩展名,另一个文件具有txt扩展名。这两个文件都用ASCII编码。它们都包含En破折号字符(十六进制值96)

当我打开扩展名为txt的文件时,该文件将按预期显示。En破折号正确显示为破折号

但是,当我打开XML文件时,En-dash字符以倒转的前/背景色显示为x96

xml文件的这种显示是否与以下事实有关:它是ASCII编码的文件,但文件包含:

为什么字符不能正确显示?当我对XML文件进行十六进制编辑时,我看到En破折号是十六进制值96,它仍然在扩展ASCII表中

文件示例:

<?xml version="1.0" encoding="UTF-8"?>
<x>Plug &amp; Play ֠No wire splicing necessary</x>

插头及;播放֠无需导线拼接

en破折号在“Play”之后,在“No”之前。请注意前导和尾随空格。

您正在创建一个无效的XML文件。我认为在这种情况下,编辑的正确行为是不被普遍接受的。记事本将其解释为文本文件。Notepad++试图将其解释为有效的XML文件,并指出问题所在

如果使用“打开”对话框,记事本成功的原因是告诉它文件的编码:“ANSI”。如果您使用拖放或其他方式,要么猜测一个明显足够接近的编码,要么总是使用“ANSI”

记事本++对您的帮助更大,因为它不仅仅是一个通用的文本编辑器。它将文件解释为XML文件(可能基于扩展名)

XML文档可以选择指示用于其字节表示的编码。您正在将文件编写为某种ANSI编码(可能是Windows-1252),但仍将其标记为UTF-8。这要求XML处理器使用UTF-8。(由于编码的相似性,程序可以使用猜测编码进行读取,以找到指定的编码,然后使用该编码再次读取文档。)

幸运的是,您的数据实际上显示为无效,而不是错误的编码导致置乱字符的无声错误。UTF-8不生成或允许值为0-255的任意序列字节。仅当0x96是编码某些Unicode码点的字节序列和模式的一部分时,才允许使用0x96。简单地说,该文件不是有效的UTF-8。Notepad++突出显示证明这一点的字节。如果尝试将文件读取为UTF-8成功,但却产生了意外的结果,则将是不幸运的


解决方案是将指定的编码与实际编码相匹配。通常,XML库都有编写器函数来完成这项工作。问题是,您使用的编写器不知道您使用的是哪种“ANSI”编码。似乎您也有不使用UTF-16的要求。也许你应该得到一个积极的声明,你可以使用什么。如果使用后处理步骤,许多工具(如)可以使用指定的文档编码为您重写XML文件

您正在创建一个无效的XML文件。我认为在这种情况下,编辑的正确行为是不被普遍接受的。记事本将其解释为文本文件。Notepad++试图将其解释为有效的XML文件,并指出问题所在

如果使用“打开”对话框,记事本成功的原因是告诉它文件的编码:“ANSI”。如果您使用拖放或其他方式,要么猜测一个明显足够接近的编码,要么总是使用“ANSI”

记事本++对您的帮助更大,因为它不仅仅是一个通用的文本编辑器。它将文件解释为XML文件(可能基于扩展名)

XML文档可以选择指示用于其字节表示的编码。您正在将文件编写为某种ANSI编码(可能是Windows-1252),但仍将其标记为UTF-8。这要求XML处理器使用UTF-8。(由于编码的相似性,程序可以使用猜测编码进行读取,以找到指定的编码,然后使用该编码再次读取文档。)

幸运的是,您的数据实际上显示为无效,而不是错误的编码导致置乱字符的无声错误。UTF-8不生成或允许值为0-255的任意序列字节。仅当0x96是编码某些Unicode码点的字节序列和模式的一部分时,才允许使用0x96。简单地说,该文件不是有效的UTF-8。Notepad++突出显示证明这一点的字节。如果尝试将文件读取为UTF-8成功,但却产生了意外的结果,则将是不幸运的


解决方案是将指定的编码与实际编码相匹配。通常,XML库都有编写器函数来完成这项工作。问题是,您使用的编写器不知道您使用的是哪种“ANSI”编码。似乎您也有不使用UTF-16的要求。也许你应该得到一个积极的声明,你可以使用什么。如果使用后处理步骤,许多工具(如)可以使用指定的文档编码为您重写XML文件

使用Microsoft的记事本打开并正确显示相同的XML文件。如果我从记事本使用UTF-8编码保存XML文件,则可以使用记事本++打开并正确显示生成的文件。我会进一步观察到,在Notepad++中打开ASCII XML文件,然后在UTF-8中进行编码>编码,or Encoding>Convert to UTF-8对文件的显示方式没有影响。您是否使用Notepad++的XML插件?@TimBiegeleisen我观察到,在Notepad++中使用XML工具的行为与在没有任何XML相关插件的情况下安装Notepad++时的行为相同。对不起。问题本身不存在的内容不存在。如果非现场位置不可用(离线、移动、删除等),该问题将失去对未来读者的价值。如果你不能提供