惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
博客园 - 司徒正美
WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
T
Tailwind CSS Blog
A
About on SuperTechFans
Apple Machine Learning Research
Apple Machine Learning Research
L
LangChain Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Visual Studio Blog
S
SegmentFault 最新的问题
Google DeepMind News
Google DeepMind News
博客园 - 聂微东

博客园 - 后凤凰

nodejs在linux系统调用lazarus编辑的so文件 node使用koffi load dll卡死 Tencoding with out BOM lazarus配置记录 lazarus fastreport导出pdf Cant swap font ubuntu20.10安装scrcpy 背诵小鹤双拼 FireBird DataType TFDManager不能在Dll中创建线程池 cxGrid导出到图片 delphi安装package时无法定位程序输入点bpl electron14之后版本使用remote - 后凤凰 - 博客园 electron-edge-js编译 - 后凤凰 - 博客园 delphi 10.4.2 启动时报错 socket error go特点 elecron调用C#dll Delphi Records与classes几点不同 electron 14 remote使用 - 后凤凰 anbox
Delphi fastreport乱码处理
后凤凰 · 2021-12-07 · via 博客园 - 后凤凰

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就可以