Groovy读取unicode xml文件并添加到JCR而不是全文添加到源文件中

时间:2016-09-06 10:19:07

标签: unicode groovy utf-8 aem

在Groovy中,使用以下代码片段我正在解析包含Unicode文本的xml文件。但是全文未复制到JCR节点,只有部分字符被识别并复制到目标JCR节点/另一个文件系统,其余字符以无法识别的格式显示。     

    FileReader fr = new FileReader("$currentFileLocation")
    def inputSource = new InputSource(fr)
    inputSource.setEncoding('UTF-8')
    def obj = new XmlSlurper().parse(inputSource)
    def HtmlContent = obj."Widget-HTML"."HtmlContent".getBody().text()
    

预期应写入目标系统: サービス事例のサポートツールセットである

但它以这种格式复制: サービス事例 ? サ ?ートツールセット ? ? る

2 个答案:

答案 0 :(得分:1)

假设下面的任意xml文件包含此问题的作者提到的字符。

xml 文件,比如testutf.xml。请注意,该文件使用mainJson[mainJson.inputNgModel]字符编码保存。

utf-8

这是读取的脚本,它以相同的编码读取xml文件。评论添加得恰到好处。

<?xml version="1.0" encoding="UTF-8"?>
<records>
    <record>
        <name>サービス事例のサポート ツールセットである</name>
    </record>
</records>

输出

import groovy.xml.*
//Chang the xml file path as per your environment
def fileName = '/absolute/path/of/the/testutf.xml'
//Read file with utf-8 encoding
def contents = new File(fileName).getText('utf-8')
//parsed object
def parsedContents = new XmlSlurper().parseText(contents)
//Read the data
def nameData = parsedContents.record.name
println "Record name : $nameData"

我相信您应该能够将相同的内容应用于您自己的xml而不是上面的示例xml。

答案 1 :(得分:0)

你可以尝试将编码作为Shift_JIS来处理日文字符的细节。

请参阅有关使用UTF-8,UTF-16和Shift_JS进行日语编码的讨论here