精华内容
下载资源
问答
  • XML 编码格式

    万次阅读 2012-07-14 16:46:22
    他们创建了 XML 文档,键入了数据,粘上了几个标记,调整了标记的格式,甚至放入了 声明,作为额外增添。然后他们试着装载它,可得到的却是意想不到的出错消息,Microsoft(R) XML Parser (MSXML) 报告说数据有问题。

    http://news.newhua.com/news/2006/0118/7353.shtml

     

    如何使 XML 文件在不同的平台间正确地传递数据。他们创建了 XML 文档,键入了数据,粘上了几个标记,调整了标记的格式,甚至放入了 <?xml version=1.0?> 声明,作为额外增添。然后他们试着装载它,可得到的却是意想不到的出错消息,Microsoft(R) XML Parser (MSXML) 报告说数据有问题。

    Unicode Consortium(统一码协会)确信(用双字节而不是单字节表示每个字符)定义一个通用的代码页是个好主意,该代码页适用于全世界所有的语言,从而不同代码页之间的映射问题将不复存在。

    既然如此,如果 Unicode 解决了跨平台的字符编码问题,那为何它却未成为唯一的标准呢?第一个问题是,转换到 Unicode 有时意味着使所有的文件大小加倍 — 这样做在网络世界中是不可想象的。因此有人仍乐于使用老的、单字节的字符集,如 ISO-8859-1 到 ISO-8859-15、Shift-JIS、EUC-KR 等等。

    第二个问题是,仍存在许多并非基于 Unicode 的系统,这就意味着在网络上,某些组成 Unicode 字符的字节值可能会给那些更旧的系统造成严重问题。因此定义了“Unicode 转换格式 (UTF)”;它们运用位转换技术对 Unicode 字符进行编码,使其成为在老系统上“透明的”(或可安全通过)的字节值。

    此类字符编码中最普及的是 UTF-8。UTF-8 采用 Unicode 标准的前 127 个字符(它们恰好是基本的拉丁文字符:A-Z、a-z 和 0-9,以及几个标点字符),并直接将其映射到单字节值。然后采用位转换技术,用字节的高位来编码 Unicode 字符的其余部分。这样做的结果是,小瑞典字符 å (0xE5) 变成了下列双字节乱码:Ã¥ (0xC3 0xA5)。所以,除非您能够在脑海里进行位转换,否则,在UTF-8 中编码的数据是无法被人读懂的。

    Content-Type 标题

    因为更旧的单字节字符集仍被使用,所以只有当指定了数据所在的实际字符集之后,传输数据的问题才能得以解决。认识到这一点后,Internet 电子邮件和 HTTP 协议小组定义了一种标准方法,用以在消息标题 Content-Type 属性中指定字符集。该属性从注册的字符集名称列表中指定一个字符集,该字符集名称是由 Internet Assigned Numbers Authority (IANA)定义的。典型的 HTTP 标题都可能包含下列文本:

    HTTP/1.1 200 OKContent-Length: 15327Content-Type: text/html; charset:ISO-8859-1;Server: Microsoft-IIS/5.0Content-Location: http://www.microsoft.com/Default.htmDate: Wed, 08 Dec 1999 00:55:26 GMTLast-Modified: Mon, 06 Dec 1999 22:56:30 GMT

    该标题向应用程序表明,跟在标题后面的内容位于 ISO-8859-1 字符集中。

    Content-Type 元标记

    Content-Type 属性是可选项,在有些应用程序中,HTTP 标题的信息被去掉了,而只有 HTML 本身通过。为了补救这一点,HTML 标准小组定义了一种可选的元标记方法,用于指定 HTML 文档本身的字符集,使 HTML 文档字符集是自描述的。

    <META HTTP-EQUIV=Content-Type CONTENT=text/html; charset=ISO-8859-1>

    在这种情况下,字符集 ISO-8859-1 说明在此特定的 HTML 页中,字节值 229 表示 å。现在该页对任何系统来说,都是完全清楚的,数据不会被曲解。遗憾的是,由于此元标记是可选的,所以它给错误留下了空子。

    字符实体

    不是所有的系统支持所有的注册字符集。例如,我并不认为很多平台实际上可支持称为 EBCDIC 的 IBM 主机字符集。Windows NT 是支持的,但许多其他系统很可能不支持 — 这大概就是 http://www.ibm.com(英文)主页为什么生成 ASCII 的原因。

    作为备选方案,HTML 允许通过指定确切的 Unicode 字符值,对该页中的单个字符进行编码。然后将这些字符实体进行脱离字符集的分析,即可确切地确定其 Unicode 值。它的语法是 ?amp;#229;?or ?amp;#xE5;?。

    XML 从 HTML 那里借鉴了这些思想,并使之更进一步,定义了一个彻底明确的算法,以确定编码使用的字符集。在 XML 中,由 XML 声明中的可选编码属性定义字符编码。下列算法确定默认的编码:

    如果文件以 Unicode 字节次序标志 [0xFF 0xFE] 或 [0xFE 0xFF] 开头,则认为该文档是在 UTF-16 编码中。否则,它在 UTF-8 中。

     

     

    字符集或编码 HTTP 标题 XML 文档
    ISO-8859-1 Content-Type: text/xml; charset:ISO-8859-1; <test>ålt;/test>
    UTF-8 Content-Type: text/xml; <test>Ã¥</test>
    ISO-8859-1 Content-Type: text/xml; <?xml version=1.0 encoding=ISO-8859-1?>
    <test>ålt;/test>
    UTF-8(用字符实体) Content-Type: text/xml; <test>&#229;</test>
    UTF-16(带字节次序标志的 Unicode) Content-Type: text/xml; ff fe 3c 00 74 00 65 00 73 00 74 00 3e 00 e5 00 ..<.t.e.s.t.>...
    3c 00 2f 00 74 00 65 00 73 00 74 00 3e 00 0d 00 <./.t.e.s.t.>...
    0a 00

    字符集和 MSXML DOM

    现在,讨论过不同的字符编码方法之后,让我们来看看如何在 MSXML DOM 中加载 XML 文档,以及当碰到模糊编码的字符时,可能收到的出错消息的类型。加载 XML DOM 文档的两个主要方法是 LoadXML 方法和 Load 方法。

    LoadXML 方法总是采用只在 UCS-2 或 UTF-16 中编码的 Unicode BSTR。如果将非有效的 Unicode BSTR 的内容传递给 LoadXML,则加载会失败。

    Load 方法可将以下内容当作 VARIANT:

     

    Value Des cription
    URL 如果 VARIANT 是 BSTR,则将其理解为 URL。
    VT_ARRAY | VT_UI1 VARIANT 也可以是包含原始编码字节的 SAFEARRAY。
    IUnknown 如果 VARIANT 是 IUnknown 接口,则 DOM 文档为 IStreamIPersistStreamIPersistStreamInit 调用 QueryInterface


     

    Load 方法实现以下算法,用于确定 XML 的字符编码或字符集。

    • 如果 Content-Type HTTP 标题定义了字符集,该字符集则替代 XML 文档本身的所有内容。因为没有 HTTP 标题,所以这显然不适用于 SAFEARRAY 和 IStream 机制。

    • 如果有双字节 Unicode 字节次序标志,则它假设编码是 UTF-16。它既可处理大 endian,也可处理小 endian。

    • 如果有四字节 Unicode 字节次序标志 (0xFF 0xFE 0xFF 0xFE),则它假设编码是 UTF-32。它既可处理大 endian,也可处理小 endian。

    • 否则,它假设编码是 UTF-8,除非它用指定其他一些字符集的编码属性(如 ISO-8859-1、Windows-1252、Shift-JIS 等),找到 XML 声明。

    您将看到两个从 XML DOM 返回的指出编码问题的出错消息。第一个通常指出文档中的字符与 XML 文档的编码不匹配:

    在文本内容中发现了一个无效字符。

    ParseError 对象可告诉您这个捣乱字符在某一行的确切位置,以便使您解决该问题。

    第二个出错消息指出您一开始用的是 Unicode 字节次序标志(或调用了 LoadXML 方法),然后编码属性指定了不是双字节编码的编码(如 UTF-8 或 Windows-1250):

    不支持从当前编码转换到指定的编码。

    另外,您可能调用了 Load 方法,并在一开始使用了单字节编码(没有字节次序标志),但是它随后发现了指定双字节或四字节编码(如 UTF-16 或 UCS-4)的编码属性。

    基本原则是不能利用 XML 声明的编码属性,在多字节字符集如 UTF-8、Shift-JIS 或 Windows-1250,与 Unicode 字符编码如 UTF-16、UCS-2 或 UCS-4 之间进行转换,这是因为声明本身必须对每个字符都使用与文档其余部分相同数量的字节。

    最后,IXMLHttpRequest 接口提供如下方法,用以访问下载的数据:

     

    Methods Desc ription
    ResponseXML 表示由 MSXML DOM 分析器分析的响应实体(用与 Load 方法相同的规则)。
    ResponseText 表示作为字串的响应实体。本方法盲目地解码从 UTF-8 收到的消息实体。这是一个已知问题,应在即将面市的 MSXML Web Release 中得到解决。
    ResponseBody 表示作为无符号字节数组的响应实体。
    ResponseStream 表示作为 IStream 接口的响应实体。


     

    用 MSXML 创建新的 XML 文档

    一旦加载了 XML 文档,即可用 DOM 处理 XML 文档,而不必考虑任何编码问题,因为文档是作为 Unicode 存储在内存中的。所有 XML DOM 接口都是基于 COM BSTR 的,后者是双字节的 Unicode 字串。这就是说,您可以从新开始在包含所有 Unicode 字符的内存中建立 MSXML DOM 文档,并且所有组建将会共享该内存中的 DOM,而不会对 Unicode 字符值的意思有任何疑惑。然而,当对其进行保存时,MSXML 将以默认方式按 UTF-8 编码所有数据。例如,假设您进行了以下处理:

    var xmldoc = new ActiveXObject(Microsoft.XMLDOM)var e = xmldoc.createElement(test);e.text = å;xmldoc.appendChild(e);xmldoc.save(foo.xml);

    下列 UTF-8 编码文件的结果是:

    <test>Ã¥</test>

    注意 上述例子只有当在浏览器以外的环境运行时,才有效。由于受到安全限制,在浏览器里调用 Save 方法将不会产生相同的结果。

    尽管这看上去有点怪,但却是正确的。下列测试装载了用 UTF-8 编码的文件,并测试 UTF-8 是否被重新解码为 Unicode 字符值 229。它是:

    var xmldoc = new ActiveXObject(Microsoft.XMLDOM)xmldoc.load(foo.xml);if (xmldoc.documentElement.text.charCodeAt(0) == 229){    WSc ript.echo(Yippee - it worked !!);}

    要想更改 XML DOM Save 方法使用的编码,需要用如下位于文档顶部的编码属性创建 XML 声明:

    var pi = xmldoc.createProcessingInstruction(xml,                          version=1.0 encoding=ISO-8859-1);xmldoc.appendChild(pi);

    调用 save 方法时,您就会得到以下用 ISO-8859-1 编码的文件:

    <?xml version=1.0 encoding=ISO-8859-1?><test>ålt;/test>

    现在,小心不要被 XML 属性迷惑。XML 属性返回 Unicode 字串。如果在创建 ISO-8859-1 编码声明之后,调用 DOMDocument 对象上的 XML 属性,即可取回以下 Unicode 字串:

    <?xml version=1.0?><test>ålt;/test>

    请注意这里没有 ISO-8859-1 编码声明了。这是正常的。这样做的原因是使您可以转而用此字串调用 LoadXML,它会起作用。如果它不这么做,LoadXML 会失败并返回出错消息:“不支持从当前编码切换到指定的编码。”

    结论

    但愿本文有助于解释字符编码的工作原理,特别是在 XML 和 MSXML DOM 中的工作原理。一旦您理解了字符集编码,它是相当简单的,而且 XML 是非常出色的,因为它在这方面未留有丝毫含糊的余地。尽管 MSXML DOM 有几处怪异需要密切留意,但它仍不失为一个能让您读取和写入任何 XML 编码的强大工具。

    有关详细信息

    • Microsoft MSDN Online Library: XML DOM Reference(Microsoft MSDN 联机库:XML DOM 引用)

    • Character Encoding Model(字符编码模型),作者:Ken Whistler 和 Mark Davis

    • IANA Character Sets(IANA 字符集)

    • http://www.ietf.org(英文)的 Internet Engineering Task Force (IETF) 提供了 RFC 列表

    • Microsoft MSDN Online Library: Compatibility Issues with Mixed Environments(Microsoft MSDN 联机库:与混合环境的兼容性问题)

     

     

    展开全文
  • spring web.xml编码格式配置

    千次阅读 2012-12-27 16:00:28
    -- 设置servlet编码开始 --> <filter-name>CharacterEncodingFilter <filter-class>org.springframework.web.filter.CharacterEncodingFilter <param-name>encoding <param-value>utf-8 <param-name>...
    <!-- 设置servlet编码开始 -->
        <filter>
            <filter-name>CharacterEncodingFilter</filter-name>
            <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>utf-8</param-value>
            </init-param>
            <init-param>
                <param-name>forceEncoding</param-name>
                <param-value>true</param-value>
            </init-param>
        </filter>
        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
        <!-- 设置servlet编码结束 -->

      <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    这里为所有,但是也可以配置如下,多个

    	<filter-mapping>
    		<filter-name>encodingFilter</filter-name>
    		<url-pattern>*.do</url-pattern>
    	</filter-mapping>
    	<filter-mapping>
    		<filter-name>encodingFilter</filter-name>
    		<url-pattern>*.jsp</url-pattern>
    	</filter-mapping>


    (个人微信号)  (技术公众号)

    展开全文
  • 使用 dom4j 生成 XML指定编码格式

    千次阅读 2015-05-25 16:28:26
    dom4j生成XML指定编码格式
    使用 dom4j 的来生成 XML不应该用 FileWriter 对象来构建 xml 文档,而应该使用 FileOutputStream

     java 中由 Writer 类继承下来的子类没有提供编码格式处理, 所以 dom4j 也就无法对输出的文件进行正确的格式处理。 这时候所保存的文件会以系统的默认编码对文件进行保存,在中文版的 window 下 java的默认的编码为 GBK, 也就是所虽然我们标识了要将 xml 保存为 utf-8 格式但实际上文件是以 GBK 格式来保存的, 所以这也就是为什么能够我们使用 GBK、 GB2312编码来生成 xml 文件能正确的被解析,而以 UTF-8 格式生成的文件不能被 xml解析器所解析的原因
    展开全文
  • Java判断文件编码格式

    千次阅读 2013-02-20 18:38:03
     按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码格式。其实,如果项目运行的平台就是中文...

    1:简单判断是UTF-8或不是UTF-8,因为一般除了UTF-8之外就是GBK,所以就设置默认为GBK。

        按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码的格式。其实,如果项目运行的平台就是中文操作系统,如果这些文本文件在项目内产生,即开发人员可以控制文本的编码格式,只要判定两种常见的编码就可以了:GBK和UTF-8。由于中文Windows默认的编码是GBK,所以一般只要判定UTF-8编码格式。
        对于UTF-8编码格式的文本文件,其前3个字节的值就是-17、-69、-65,所以,判定是否是UTF-8编码格式的代码片段如下:

    File file = new File(path);
    InputStream in= new java.io.FileInputStream(file);
    byte[] b = new byte[3];
    in.read(b);
    in.close();
    if (b[0] == -17 && b[1] == -69 && b[2] == -65)
    System.out.println(file.getName() + ":编码为UTF-8");
    else
    System.out.println(file.getName() + ":可能是GBK,也可能是其他编码");

    通过这个方法,只要知道文件头存储的编码信息,可以类似判断文件是否是某一编码格式的文件,不再限于是否是utf-8,就不在赘述。注意这个方法的局限:文件头必须有文件存储编码的信息,对于不规范的文件或被篡改过的就另当别论,呵呵。

    2:更复杂的文件编码检测,可以使用一个开源项目cpdetector,它所在的网址是:http://cpdetector.sourceforge.net/。它的类库很小,只有500K左右,cpDetector是基于统计学原理的,不保证完全正确,利用该类库判定文本文件的代码如下:

    读外部文件(先利用cpdetector检测文件的编码格式,然后用检测到的编码方式去读文件)

    /** 
    	 * 利用第三方开源包cpdetector获取文件编码格式
    	 * 
    	 * @param path
    	 *            要判断文件编码格式的源文件的路径
    	 */
    	public static String getFileEncode(String path) {
    		/*
    		 * detector是探测器,它把探测任务交给具体的探测实现类的实例完成。
    		 * cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法 加进来,如ParsingDetector、
    		 * JChardetFacade、ASCIIDetector、UnicodeDetector。
    		 * detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的
    		 * 字符集编码。使用需要用到三个第三方JAR包:antlr.jar、chardet.jar和cpdetector.jar
    		 * cpDetector是基于统计学原理的,不保证完全正确。
    		 */
    		CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
    		/*
    		 * ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于
    		 * 指示是否显示探测过程的详细信息,为false不显示。
    		 */
    		detector.add(new ParsingDetector(false));
    		/*
    		 * JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码
    		 * 测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以
    		 * 再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。
    		 */
    		detector.add(JChardetFacade.getInstance());// 用到antlr.jar、chardet.jar
    		// ASCIIDetector用于ASCII编码测定
    		detector.add(ASCIIDetector.getInstance());
    		// UnicodeDetector用于Unicode家族编码的测定
    		detector.add(UnicodeDetector.getInstance());
    		java.nio.charset.Charset charset = null;
    		File f = new File(path);
    		try {
    			charset = detector.detectCodepage(f.toURI().toURL());
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		}
    		if (charset != null)
    			return charset.name();
    		else
    			return null;
    	}
    	String charsetName = getFileEncode(configFilePath);
    	System.out.println(charsetName);
    	inputStream = new FileInputStream(configFile);
    	BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, charsetName));
    

    读jar包内部资源文件(先利用cpdetector检测jar内部的资源文件的编码格式,然后以检测到的编码方式去读文件):

    /**
    	 * 利用第三方开源包cpdetector获取URL对应的文件编码
    	 * 
    	 * @param path
    	 *            要判断文件编码格式的源文件的URL
    	 */
    	public static String getFileEncode(URL url) {
    		/*
    		 * detector是探测器,它把探测任务交给具体的探测实现类的实例完成。
    		 * cpDetector内置了一些常用的探测实现类,这些探测实现类的实例可以通过add方法 加进来,如ParsingDetector、
    		 * JChardetFacade、ASCIIDetector、UnicodeDetector。
    		 * detector按照“谁最先返回非空的探测结果,就以该结果为准”的原则返回探测到的
    		 * 字符集编码。使用需要用到三个第三方JAR包:antlr.jar、chardet.jar和cpdetector.jar
    		 * cpDetector是基于统计学原理的,不保证完全正确。
    		 */
    		CodepageDetectorProxy detector = CodepageDetectorProxy.getInstance();
    		/*
    		 * ParsingDetector可用于检查HTML、XML等文件或字符流的编码,构造方法中的参数用于
    		 * 指示是否显示探测过程的详细信息,为false不显示。
    		 */
    		detector.add(new ParsingDetector(false));
    		/*
    		 * JChardetFacade封装了由Mozilla组织提供的JChardet,它可以完成大多数文件的编码
    		 * 测定。所以,一般有了这个探测器就可满足大多数项目的要求,如果你还不放心,可以
    		 * 再多加几个探测器,比如下面的ASCIIDetector、UnicodeDetector等。
    		 */
    		detector.add(JChardetFacade.getInstance());// 用到antlr.jar、chardet.jar
    		// ASCIIDetector用于ASCII编码测定
    		detector.add(ASCIIDetector.getInstance());
    		// UnicodeDetector用于Unicode家族编码的测定
    		detector.add(UnicodeDetector.getInstance());
    		java.nio.charset.Charset charset = null;
    		try {
    			charset = detector.detectCodepage(url);
    		} catch (Exception ex) {
    			ex.printStackTrace();
    		}
    		if (charset != null)
    			return charset.name();
    		else
    			return null;
    	}
    	URL url = CreateStationTreeModel.class.getResource("/resource/" + "配置文件");
    	URLConnection urlConnection = url.openConnection();
    	inputStream=urlConnection.getInputStream();
    	String charsetName = getFileEncode(url);
    	System.out.println(charsetName);
    	BufferedReader in = new BufferedReader(new InputStreamReader(inputStream, charsetName));

    3:探测任意输入的文本流的编码,方法是调用其重载形式:

    charset=detector.detectCodepage(待测的文本输入流,测量该流所需的读入字节数);

    上面的字节数由程序员指定,字节数越多,判定越准确,当然时间也花得越长。要注意,字节数的指定不能超过文本流的最大长度。

    4:判定文件编码的具体应用举例:
        属性文件(.properties)是Java程序中的常用文本存储方式,象STRUTS框架就是利用属性文件存储程序中的字符串资源。它的内容如下所示:
        #注释语句
        属性名=属性值
        读入属性文件的一般方法是:

    FileInputStream ios=new FileInputStream(“属性文件名”);
    Properties prop=new Properties();
    prop.load(ios);
    String value=prop.getProperty(“属性名”);
    ios.close();

        利用java.io.Properties的load方法读入属性文件虽然方便,但如果属性文件中有中文,在读入之后就会发现出现乱码现象。发生这个原因是load方法使用字节流读入文本,在读入后需要将字节流编码成为字符串,而它使用的编码是“iso-8859-1”,这个字符集是ASCII码字符集,不支持中文编码,
        方法一:使用显式的转码:

    String value=prop.getProperty(“属性名”);
    String encValue=new String(value.getBytes(“iso-8859-1″),”属性文件的实际编码”);

        方法二:象这种属性文件是项目内部的,我们可以控制属性文件的编码格式,比如约定采用Windows内定的GBK,就直接利用”gbk”来转码,     如果约定采用UTF-8,就使用”UTF-8″直接转码。
        方法三:如果想灵活一些,做到自动探测编码,就可利用上面介绍的方法测定属性文件的编码,从而方便开发人员的工作
        补充:可以用下面代码获得Java支持编码集合:
        Charset.availableCharsets().keySet();
        可以用下面的代码获得系统默认编码:
        Charset.defaultCharset();


    展开全文
  • XML文件编码格式和encoding属性

    千次阅读 2009-05-14 14:04:00
    这几天学习使用Xerces-C++库,在创建XML文件时,文件的编码格式和encoding属性的问题把我折磨半死。 刚开始我很肯定的认为XML文件的编码格式和encoding的属性值是一致的。我用Xerces-C++生成了一个XML文件(只有...
  • tomcat中server.xml配置编码格式

    万次阅读 热门讨论 2017-09-09 20:05:57
    在项目的调试过程中出现中文乱码的问题,第一反应是编码格式的问题,但具体在哪里改,不太熟悉,在小伙伴和“度娘”的指导下,顺利的解决了问题。 方案: 1、找到tomcat的server.xml配置文件 2、添加...
  • XML编码

    2007-03-09 18:16:00
    XML文档可以包含外文字符比如挪威语或者法语(中文...Windows 95/98 记事本Windows 95/98 记事本不能以Unicode的编码格式保存文件。可以使用记事本来编辑和保存包含了外文字符的XML文档 (比如:挪威语或者法语或者中
  • java判断文件编码格式

    千次阅读 2013-09-04 14:19:45
     按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码格式。其实,如果项目运行的平台就是中文...
  • 说实话不得不抱怨一下了,老师给了一堆xml文件让我解析,用python我弄了几个小时发现编码格式GB2312的转换为utf8的格式就是不行,我也不知道为什么。 于是我放弃用python的方法转换编码格式,采用java的编码格式...
  • 今天在用JAVA读取XML数据时出现的在这个异常,java.net.MalformedURLException: no protocol ...初次判断编码问题,然后上网搜了一下找到解决的办法。 我的代码是 [java] view plain c
  • *判断在web.xml中是否设置了编码格式的信息 *如果为null 则设置为web.xml编码格式 *否则设置UTF-8 */ if(this.encode != null && !this.encode.equals("")) { request.setCharacterEncoding(this.encode); ...
  • web.xml全站编码格式设置

    千次阅读 2018-03-30 13:16:13
    依赖的jar包为:链接:...--处理全站请求编码,无论是get还是posy,默认是utf-8 --&gt; &lt;filter&gt;&lt;filter-name&gt;EncodingFilter&lt;/filter-name&gt;&l...
  • 随着面向服务(SOA)的开发方式的兴起,客户端和服务端之间的消息传送,很多采用了XML格式。但是大家在日常的开发中,应该会有这么种体验,就是组织xml格式的代码太繁琐,这篇随笔也是为了和大家分享下简便的组织xml...
  • Robotframework 调XML库解析xml文件时只支持utf-8编码格式的问题使用XML解析GBK编码格式xml文件时,会报错 ValueError: multi-byte encodings are not supported Robotframework中的代码 ${xml} parse xml ${...
  • 1,java 读取 xml utf-8 编码格式的文件,出现 Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; 前言中不允许有内容。  出现这样的原因, 是因为读取文件过程中,出现了格式转化问题,在...
  • 今天在实现文件上传的过程中,遇到URL传参数乱码的情况,我首先想到的:可能是容器的默认编码方式与我的编码方式不同导致的,需要修改为“utf-8”,在这里就不说文件上传了,只是遇到server.xml自动复原的问题,简单...
  • XML指南——XML编码

    千次阅读 2005-04-15 17:42:00
    XML文档可以包含外文字符比如挪威语或者法语...Windows 95/98 记事本Windows 95/98 记事本不能以Unicode的编码格式保存文件。可以使用记事本来编辑和保存包含了外文字符的XML文档 (比如:挪威语或者法语或者中文)小奀
  • 判断文件的编码格式

    千次阅读 2018-03-06 14:20:30
    按照给定的字符集存储文件时,在文件的最开头的三个字节中就有可能存储着编码信息,所以,基本的原理就是只要读出文件前三个字节,判定这些字节的值,就可以得知其编码格式。其实,如果项目运行的平台就是中文操作...
  • XML文件的编码问题

    万次阅读 2014-06-06 00:50:06
    这两天在项目处理一个解析编码格式为ANSI的xml文件时,遇到了一些问题,现将分析过程总结如下。 通过win7自带的记事本或者notepad++创建一个xml文件test_source: coffeecat "测试" 可以看到在xml文件的第一行...
  • 今天需要将多个Excel文档转换为XML格式,本打算用MS Office自带的另存为XML文件的功能,结果转换成MS Office2003 XML之后的文件就是一坨屎!Office 2007自带的XML文档转换的功能也TMD超级繁琐,根据帮助手册自己建了...
  • dom4j解析xml文档请参考:java... 此时,不管xml文档的编码格式是什么,读入内存的Document都是UTF-8格式的,如果不设定写回时的编码格式,将按照操作系统的编码格式(gb2312或gbk)写回文件。  如果 xml文档是UTF-8
  • java 怎么判断文本内容的编码格式

    千次阅读 2016-05-07 11:16:29
    java 怎么判断文本内容的编码格式
  • Android Xml文件生成,Xml数据格式写入

    千次阅读 2017-10-08 10:48:45
    生成xml文件格式数据,Android提供了Xml.newSerializer();,可以理解为Xml序列化;序列化:把内存里面的数据(file,databases,xml 等等) 丢给某一个地方; 反序列化:把某个地方的数据(file,databases,xml 等等),拿...
  • android 解析gbk编码格式的网络xml文件

    千次阅读 2012-12-14 18:04:15
    如[urlStr下]:http://www.youdao.com/smartresult-xml/search.s?type=mobile&q=13454522345" 2.返回数据 public String resposeString(String urlStr){ String result = ""; try { URL url = new U
  • XML编码问题导致的错误

    千次阅读 2010-06-30 17:21:00
    xml编码错误:org.apache.harmony.xml.ExpatParser$ParseException:At line 4,column 11:not well-formed的解决办法. InputSource流-->InputStream流-->byte[]-->String-->对String进行修改-->byte[]-->...
  • tomcat设置编码格式

    千次阅读 2019-02-22 15:05:59
    乱码 tomcat设置编码格式 在tomcat的安装路径下找到server.xml文件,打开添加编码格式URIEncoding="UTF-8",保存  

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 457,449
精华内容 182,979
关键字:

如何判断xml编码格式