`

解析XML文件时的乱码问题

    博客分类:
  • xml
阅读更多
使用的是SAX解析器:
    DocumentBuilderFactory doDocumentBuilder = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = doDocumentBuilder.newDocumentBuilder();


1. 输入流是字符流,经过InputSource封装后,解析器直接读取该流,忽略其中的任何字符编码声明:
	BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("dialect.xml"), "WINDOWS-1252")); // 实例化InputStreamReader时,已指定字符编码
	InputSource is = new InputSource(reader);
	Document doc = docBuilder.parse(is);
	doc.getDocumentElement().normalize();


2. 输入流是字节流

a. 字节流不包含编码信息,需要调用InputSource的setEncoding(String encoding)方法来指定编码。
	BufferedInputStream bis = new BufferedInputStream(new FileInputStream("dialect.xml"));
	InputSource is = new InputSource(bis);
	is.setEncoding("WINDOWS-1252");
	Document doc = docBuilder.parse(is);


b. 如果没有传入编码参数,解析器会根据XML文件中声明的编码来解析

<?xml version="1.0" encoding="WINDOWS-1252"?>
<dialects>
</dialects>


c. 如果XML文件中也没有编码声明,则根据XML规范中的算法自动探测字符编码,这样很有可能产生乱码情况。
分享到:
评论

相关推荐

    解决读取XML元素时的中文乱码的程序

    具体步骤可能包括使用编程语言提供的XML处理库,设置正确的编码,然后读取、解析XML文件,验证中文元素是否正确显示。如果一切正常,说明解决方案有效。 总的来说,解决XML文件中文乱码问题需要对字符编码有深入的...

    dom4j 输出XML时中文乱码解决

    然而,在使用 Dom4J 输出 XML 文档时,中文字符可能会出现乱码问题。这是因为 Dom4J 的默认编码方式可能不支持中文字符。解决这个问题的方法是将输出编码方式设置为 UTF-8。 设置输出编码方式 ------------------ ...

    JAXB乱码问题解决

    在处理XML文件时,特别是涉及到序列化和反序列化时,可能会遇到字符编码问题,即所谓的“乱码”。这个问题通常发生在XML文件的编码格式与Java程序运行时的默认编码不匹配的情况下。 当XML文件以UTF-8编码存储,包含...

    Dom4j解析XML及中文问题

    在解析XML文件时,通常会使用`DocumentBuilderFactory`和`DocumentBuilder`来创建一个`Document`对象,然后通过这个对象访问XML的元素和属性。以下是基本的代码示例: ```java import org.dom4j.Document; import ...

    解析XML数据

    在本文中,我们将深入探讨XML的基本概念、解析XML数据的方法以及在实际应用中可能遇到的问题,比如乱码问题。 XML的结构: XML文档由一系列的元素构成,每个元素都有开始标签和结束标签,例如 `&lt;tag&gt;` 和 `&lt;/tag&gt;`...

    cocos2dx 解析XML文件

    本篇文章将深入探讨如何在Cocos2d-x中解析XML文件,以充分利用其结构化数据的优势。 首先,我们需要了解Cocos2d-x本身并不直接支持XML解析,但可以借助第三方库如pugixml或tinyxml来实现这一功能。这两个库都是轻量...

    android 三种方式解析XML(DOM,Pull,Sax) 带文件编码识别

    本篇文章将深入探讨三种在Android中解析XML的方法:DOM(文档对象模型)、Pull(拉取解析器)和SAX(简单API for XML),并且会特别强调如何识别文件编码。 首先,DOM解析是将整个XML文件加载到内存中形成一个树形...

    解决jbpm中gpd.xml的中文乱码

    当这个文件中的中文字符出现乱码时,会给流程设计和执行带来困扰。以下是如何解决jbpm中gpd.xml中文乱码问题的详细步骤和相关知识点: 首先,我们需要理解的是字符编码的基础知识。在计算机中,文本是以二进制形式...

    anroid SAX解析xml文件及实例

    3. **编码问题**:确保XML文件的编码与解析时指定的编码一致,避免乱码问题。 4. **XML文档结构**:SAX解析器依赖于XML文档的正确性,所以XML文档必须符合XML规范。 综上所述,SAX解析器是Android中处理XML文件的...

    ajax发送xml-java解析xml.doc

    4. **服务器端解析XML**: 在Java服务器端,首先设置`Request.ContentEncoding`来处理可能的中文乱码问题。接着,使用`XmlDocument`类创建一个新的XML文档对象,并使用`Load()`方法从请求的输入流中加载接收到的XML...

    对Apache生产的XML文档生成和解析库的封装,支持XML中包含中文字符串

    SAX是一种事件驱动的解析方式,它在读取XML文档时触发一系列事件,适合处理大型XML文件,因为内存消耗较低。而DOM则将整个XML文档加载到内存中形成一个树形结构,便于遍历和操作,但对内存要求较高,适用于小型或...

    Android解析XML使用WebView显示

    - **SAX解析器**:适用于处理大型XML文件,因为它按事件流处理,不会一次性加载整个文档到内存,节省资源。 - **Pull解析器**:适用于迭代读取XML数据,如XmlPullParser,它是基于事件驱动的,适合进行增量解析。 ...

    XML文件的创建和解析

    XML(eXtensible Markup Language)是一种用于存储和传输...通过以上步骤,你可以使用C++和MSXML库高效地创建和解析XML文件。在实际开发中,可以根据项目需求选择合适的方法,结合DOM和SAX的优点,优化XML处理性能。

    乱码问题的解决

    "乱码问题的解决" 在 Web 开发中,乱码问题是常见的难题之一。乱码问题的出现主要是由于编码不一致引起的。编码不一致可能出现在多个方面,如页面编码、服务器编码、客户端编码、数据库编码等。在本文中,我们将...

    vs2008下mfc读取xml文件

    首先,我们需要引入MFC中的CXMLDOMDocument类,它是MSXML库的一个接口,可以用来解析XML文档。在你的头文件(如`.h`文件)中,添加以下包含语句: ```cpp #include #include #pragma comment(lib, "msxml2.lib") ...

    cocos2dX显示中文字符和解析XML文件[参照].pdf

    ### cocos2d-X显示中文字符和解析XML文件详解 #### 一、背景介绍 随着游戏开发的全球化趋势,越来越多的游戏需要支持多语言环境,其中中文显示成为了一个重要的需求。cocos2d-X作为一款跨平台的游戏开发框架,在...

    JSP基于dom解析xml实例详解.docx

    本实例主要讲解如何在JSP中利用DOM解析XML文件,包括XML文件的读取、数据匹配以及数据写入。 首先,我们需要创建一个简单的User实体类,如`User`,包含姓名(name)、密码(pwd)和电子邮件(email)属性及相应的...

    flex读取xml乱码的解决方法

    在探讨“Flex读取XML乱码的解决方法”这一主题时,我们首先需要理解几个关键概念:Flex框架、XML文件以及编码问题。Flex是一种用于构建跨平台桌面应用程序和移动应用程序的强大框架,它由Adobe Systems开发并开源。...

    vc++的xml解析类代码和测试文件

    例如,可能会有一个`parseFile`函数,用于打开并解析XML文件,以及一些内部结构来存储解析过程中创建的DOM(Document Object Model)节点。 在`MyXML.cpp`中,这些方法会被具体实现。XML解析通常分为两种主要方法:...

    将xml文件转换成csv格式

    2. **解析XML文件**:使用XML解析器,如Python的`ElementTree`库,Java的`JDOM`或`DOM4J`,或者JavaScript的`DOMParser`,来读取和解析XML文件。解析器能够将XML文档转化为可操作的对象结构。 3. **构建CSV数据模型...

Global site tag (gtag.js) - Google Analytics