如何保持角色“&”从ISO-8859-1到UTF-8

时间:2013-07-18 08:28:35

标签: java utf-8 iso-8859-1

我刚刚使用带有ISO-8859-1的Eclipse编码编写了一个java文件。 在这个文件中,我想创建一个像这样的字符串(为了创建XML内容并将其保存到数据库中):

//   <image>&lt;img src="path_of_picture"&gt;</image>
String xmlContent = "<image><img src=\"" + path_of_picture+ "\"></image>"; 

在另一个文件中,我得到这个String并使用这个构造函数创建一个新的String:

String myNewString = new String(xmlContent.getBytes(), "UTF-8");

为了被XML解析器理解,我的XML内容必须转换为:

<image>&lt;img src="path_of_picture"&gt;</image>

不幸的是,我找不到如何编写xmlContent来在myNewString中获取此结果。 我尝试了两种方法:

       // First : 
String xmlContent = "<image><img src=\"" + content + "\"></image>"; 
// But the result is just myNewString = <image><img src="path_of_picture"></image>
// and my XML parser can't get the content of <image/>

    //Second :
String xmlContent = "<image>&lt;img src=\"" + content + "\"&gt;</image>";
// But the result is just myNewString = <image>&amp;lt;img src="path_of_picture"&amp;gt;</image>
你知道吗?

2 个答案:

答案 0 :(得分:0)

目前尚不清楚。但是Strings没有编码。所以当你写

String s = new String(someOtherString.getBytes(), someEncoding);

根据您的默认编码设置(用于getBytes()方法),您将获得各种结果。

如果您想阅读用ISO-8859-1编码的文件,您只需执行以下操作:

  • 从文件中读取字节:byte[] bytes = Files.readAllBytes(path);
  • 使用文件的编码创建一个字符串:String content = new String(bytes, "ISO-8859-1);

如果您需要使用UTF-8编码回写文件,请执行以下操作:

  • 使用UTF-8编码将字符串转换为字节:byte[] utfBytes = content.getBytes("UTF-8");
  • 将字节写入文件:Files.write(path, utfBytes);

答案 1 :(得分:0)

我不认为您的问题与编码有关,但如果您想“创建类似的字符串(为了创建XML内容并将其保存到数据库中)”,您可以使用以下代码:

public static Document loadXMLFromString(String xml) throws Exception
    {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        InputSource is = new InputSource(new StringReader(xml));
        return builder.parse(is);
    }

参考this SO回答。