获得;十六进制值0x3C是无效的属性字符;使用正确的日语XML
好了,我要走了 十六进制值0x3C是无效的属性字符 尝试在文件中包含日语区域设置和日语字符的计算机上读取XML时出错:获得;十六进制值0x3C是无效的属性字符;使用正确的日语XML,xml,powershell,utf-8,cjk,Xml,Powershell,Utf 8,Cjk,好了,我要走了 十六进制值0x3C是无效的属性字符 尝试在文件中包含日语区域设置和日语字符的计算机上读取XML时出错: $xml = [xml]@(Get-Content $file) XML中的特定位置非常友好: <Control type="select"> 据我所知,几乎每一个这样的错误都是由“引起的,在本例中,帮助的是在获取文件内容时显式指定编码: $xml = [xml]@(Get-Content $file -Encoding UTF8) 在这种情况下,有
$xml = [xml]@(Get-Content $file)
XML中的特定位置非常友好:
<Control type="select">
据我所知,几乎每一个这样的错误都是由“引起的,在本例中,帮助的是在获取文件内容时显式指定编码:
$xml = [xml]@(Get-Content $file -Encoding UTF8)
在这种情况下,有帮助的是在获取文件内容时显式指定编码:
$xml = [xml]@(Get-Content $file -Encoding UTF8)
下面是如何实现这一点的演示。此file.xml有一个日文字符,编码为utf8 no bom:
<こ/>
Xml并不介意E3,因为它是一个a,上面有一条弯曲的线,但81看起来就像一个空框(stackoverflow无法显示它),因此它会导致错误。以下是file.Xml的原始字节。“0D 0A”只是回车符和换行符
format-hex file.xml -encoding utf8
Path: C:\Users\admin\foo\file.xml
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 3C E3 81 93 2F 3E 0D 0A <ã“/>..
格式化hex file.xml-编码utf8
路径:C:\Users\admin\foo\file.xml
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 3C E3 81 93 2F 3E 0D 0A。。
我不知道如何准确地再现op的错误,但它是这样的。下面是如何发生这种情况的演示。此file.xml有一个日文字符,编码为utf8 no bom:
<こ/>
Xml并不介意E3,因为它是一个a,上面有一条弯曲的线,但81看起来就像一个空框(stackoverflow无法显示它),因此它会导致错误。以下是file.Xml的原始字节。“0D 0A”只是回车符和换行符
format-hex file.xml -encoding utf8
Path: C:\Users\admin\foo\file.xml
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 3C E3 81 93 2F 3E 0D 0A <ã“/>..
格式化hex file.xml-编码utf8
路径:C:\Users\admin\foo\file.xml
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 3C E3 81 93 2F 3E 0D 0A。。
我不知道如何准确地重现op的错误,但它是这样的。文档是否真的
utf-8
编码了?@MathiasR.Jessen Notepad++说它是utf-8,所有日文字符都显示正确。@MathiasR.Jessen感谢您的评论,它提示我检查是否可以在g时明确指定编码设置内容,有这样一个选项,Get content
听起来像是utf8没有bom。xml看起来像什么?0x3c是“文档实际上是utf-8
encoded吗?@MathiasR.Jessen Notepad++说它是utf-8,所有的日语字符都显示正确。@MathiasR.Jessen谢谢你的评论,它提示我检查在获取内容时是否可以显式指定编码,并且有这样一个选项,Get content
听起来像是utf8没有bom。xml是什么样子的?0x3c“很好,尽管使用$xml=[xml](获取内容-Raw$file-Encoding UTF8)
效率更高,因为它将文件作为一个整体而不是一个行数组来读取。此外,您不需要在PowerShell Core(v6+)中使用默认的-Encoding UTF8
。很好,尽管使用$xml=[xml](Get Content-Raw$file-Encoding UTF8)
,因为它将文件作为一个整体而不是一行数组来读取。此外,您不需要在PowerShell Core(v6+)中使用默认的-Encoding UTF8
。
1110xxxx 10xxxxxx 10xxxxxx
format-hex file.xml -encoding utf8
Path: C:\Users\admin\foo\file.xml
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00000000 3C E3 81 93 2F 3E 0D 0A <ã“/>..