• Delphi fastreport乱码处理


    2007

    (91, 230, 160, 183, 230, 156, 172, 231, 187, 147, 230, 158, 156, 46, 38, 35, 51, 52, 59, 233, 161, 185, 231, 155, 174, 38, 35, 51, 52, 59, 93, 32, 91, 230, 160, 183, 230, 156, 172, 231, 187, 147, 230, 158, 156, 46, 38, 35, 51, 52, 59, 231, 174, 128, 231, 167, 176, 38, 35, 51, 52, 59, 93)

    xe10 丢失了信息 176, 38

    (91, 230, 160, 183, 230, 156, 172, 231, 187, 147, 230, 158, 156, 46, 38, 35, 51, 52, 59, 233, 161, 185, 231, 155, 174, 38, 35, 51, 52, 59, 93, 32, 91, 230, 160, 183, 230, 156, 172, 231, 187, 147, 230, 158, 156, 46, 38, 35, 51, 52, 59, 231, 174, 128, 231, 167, 63, 35, 51, 52, 59, 93)

    fastreport6读取fastreport4的fr3文件时,最后一个中文字乱码。
    分析发现
    fr3文件中的xmlnode中Text是utf8编码的,但是在frxxml.pas当中ReadItem函数当中Text:=String(.....)
    直接将字符串xml所有字符强转为string
    如果其中包含Text:="uft8编码的内容"
    utf8string强转时丢失了信息,导致frxXMLSerializer单元XMLTOObj函数从xmlNode.Text中读取信息时,UTF8Decode解码出错
    有两个处理方案
    1.给xmlnode添加一个AnsiText:AnsiString的属性,在ReadItme时将转换前的信息保存在这个属性当中;之后参考XMLToObj添加XMLToObjA。其中操作全部使用AnsiString操作。
    2.另外一个方案就是直接在ReadItem函数中String转换前,将Text中的Utf8编码的内容解码为ansistring。XmlToobj函数从Text读取的解码函数都去掉。
    方法一应该简单点
    方案二node当中可能有多个Text=""的值,要处理的事多点

    修改source目录下源码后,重新编译fastreport就可以

    酒肉穿肠过 佛祖心中留 世人若学我 如同入魔道
  • 相关阅读:
    什么叫大数据,与云计算有何关系?
    基于TI 多核DSP 的大数据智能计算处理解决方案
    加固智能计算异构服务器
    Kintex7 XC7K325T 板卡五兄弟
    英伟达GPU 嵌入式开发平台
    NVIDIA Jetson™ TX1 Module
    Linux 高性能服务器编程——多线程编程
    Linux 高性能服务器编程——多进程编程
    Linux 高性能服务器编程——I/O复用的高级应用
    Linux 高性能服务器编程——I/O复用
  • 原文地址:https://www.cnblogs.com/jspdelphi/p/15657705.html
Copyright © 2020-2023  润新知