2016-09-06 32 views
1

在Groovy中,使用以下片段我解析包含Unicode文本的xml文件。但全文不会复制到JCR节点,只有部分字符被识别并复制到目标JCR节点/另一个文件系统,其余字符以不可识别的格式显示。 Groovy阅读unicode xml文件并添加到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() 

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

但它被复制为这种格式:?? サービス事例サートツール30ト る

+0

您可以将XML添加到问题中吗? –

+0

<?xml version =“1.0”encoding =“UTF-8”standalone =“yes”> < style type =“text/css”& gt; div.pChangeMainLink {background:none; } div.pChangeMainLink a {border-top:0px; padding:6px 5px 0px 25px; } .pChangeModWrap {border:none;背景:无; } .pChangeModSet {border-top:0px; } .pChangeModSet ul {list-style-type:disc; } .cModItem {margin-bottom:0px;填充底:0像素; } span.yellow {color:#fa9500; } & lt;/style & gt; & lt;! - Text Module - & gt; & lt; div class =“cModItem noBottomBorder”style =“margin-bottom:10px;” & gt; & lt; p & gt;サービス事例のサポートセールセットである等 – Senthil

+0

当我使用以下方法保存到JCR节点时,问题即将到来http://www.tothenew.com/blog/content-migration-in-aem-使用-slingpostservlet /即,HTTPBuilder请求HTTPBuilder客户=新HTTPBuilder( “HTTP:// $ {主机名}:$ {PORTNUMBER}” 作为字符串) \t \t client.request(Method.POST){ \t \t \t URI 。路径= 基本URL \t \t \t requestContentType = ContentType.URLENC \t \t \t headers.'Authorization” =“巴sic $ {“admin:admin”.bytes.encodeBase64()。toString()}“ – Senthil

回答

0

您可以尝试编码为Shift_JIS它们处理日文字符的细节。

参考的讨论here日本编码使用UTF-8,UTF-16和Shift_JS

+0

当我使用以下提到的方法保存到JCR节点时,问题即将到来tothenew.com/blog/...即,HTTPBuilder请求HTTPBuilder客户端= new HTTPBuilder(“http://$ {hostName}:$ {portNumber}“as String)client.request(Method.POST){uri.path = baseURL requestContentType = ContentType.URLENC headers.'Authorization'=”Basic $ {“admin:admin”.bytes .encodeBase64()。toString()}“ – Senthil

+0

你可以用'requestContentType =”application/x-www-form-urlencoded; charset = utf-8“'来尝试,如果这不起作用,请参考http:// stackoverflow.com/questions/3493195/how-to-specify-content-type-in​​-request-in-groovy –

1

假设以下任意XML文件,其包括由该问题的作者提到的字符。

xml文件,比如testutf.xml。请注意,该文件以utf-8字符编码进行保存。

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

这里是脚本,它读取以相同编码读取xml文件。评论添加了适当的内容。

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" 

输出

Record name : サービス事例のサポート ツールセットである 

而且我相信,你应该能够采用同样为自己的XML,而不是上面的示例XML的。

+0

谢谢Rao,但是当我使用以下提到的方法保存到JCR节点时,问题即将到来tothenew.com/ blog/... ie,一个HTTPBuilder请求HTTPBuilder client = new HTTPBuilder(“http:// $ {hostName}:$ {portNumber}”为字符串)client.req uest(Method.POST){uri.path = baseURL requestContentType = ContentType.URLENC headers.'Authorization'=“Basic $ {”admin:admin“.bytes.encodeBase64()。toString()}” – Senthil

+0

@Senthil,不确定你的意思是由JCR节点。 – Rao