XmlUtil.serialize不返回UTF8

时间:2018-03-20 10:06:11

标签: xml grails groovy

代码:

    def dataMap
    dataMap = [
                [No: '1', CustomerID: '777', Name: 'Lithuania: Ąęįėčęįasdad5645'],
                [No: '2', CustomerID: '888', Name: 'Latin: abcdefghij5646'],
                [No: '3', CustomerID: '999', Name: 'Russian: ааАСДАСЩХдсадсасд546']
              ]

    def date = new Date()
    def sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")

    def builder = new StreamingMarkupBuilder()
    builder.setEncoding("UTF-8")
    def iFile = {
        mkp.xmlDeclaration()
        mkp.declareNamespace('xsi': 'http://www.w3.org/2001/XMLSchema-instance')
        iFile {
            Header {
                FileDescription {
                    FileVersion("rep-v1.2")
                    FileDateCreated(sdf.format(date))
                    DataType("F")
                    SoftwareName('reporting-api')
                    SoftwareVersion('2.0')
                    NumberOfParts("1")
                    PartNumber("BILLS")
                }
            }
            MasterFiles {}
            SourceDocuments {
                SalesInvoices {
                    for (row in dataMap) {
                        Invoice {
                            InvoiceNo(row.No)
                            CustomerInfo {
                                CustomerID(row.CustomerID)
                                Name("{!! htmlspecialchars(" + row.Name + ",ENT_NOQUOTES | ENT_IGNORE | ENT_HTML401, \"UTF-8\") !!}")
                            }
                        }
                    }
                }
            }
        }
    }
    XmlUtil.serialize(builder.bind(iFile))

问题在于我何时使用:

XmlUtil.serialize(builder.bind(someFile))

我的xml没有UTF-8字符。已注意到在线(字段row.Name序列化后需要刮擦其他国家符号)

Name("{!! htmlspecialchars(" + row.Name + ",ENT_NOQUOTES | ENT_IGNORE | ENT_HTML401, \"UTF-8\") !!}")
请帮忙解决那个问题,好像是java XmlUtil类问题,但为什么呢? Java不是Unicode(笑话)?

builder.setEncoding("UTF-8")

不起作用。

0 个答案:

没有答案