近期在为某平台写客户端(当然是会开源的),使用Lazarus与Free Pascal进行开发。在将部分从接口中获取到的信息展示到同一个Label上(赋值caption)时遇到了编码错误的问题。
在必应上查了一下,前不见古人,后不见来者,我认为这是我使用的某个库(fcl-json)的问题(那个库在fp wiki里面的中文页面还是我翻译出来的(骄傲)),也有可能是用fp web读API的时候遇到了问题,也许是其返回的值的数据类型的问题,导致在将固定的AnsiString与其返回值相加时出现编码错误。
解决问题
Free Pascal中默认的string表示的是AnsiString,但我使用fpweb获取的网页(应该)使用了UTF-8,因此需要调用函数将所有UTF-8的字符串转换为AnsiString
最后,我在每个JSON对象的String元素外面套了个Utf8ToAnsi函数,问题得到解决。
See also:Utf8ToAnsi (freepascal.org)
发表回复