在工作中,经常需要用到Restful的接口调用,由于往往是推送给对方数据,对方返回状态,所以,只需要给对方推送正确的UTF-8编码即可。这个在我之前的例子里已经有了。

但是最近调用一个接口的时候,发现对方返回给我的,也是UTF-8的编码。但这个UTF-8的字符串,通过UTFDecode转换后,部分汉字正常,部分出现乱码。

然后我用了几种方式,包括ByteBufferToAnsiString, TEncoding.Default.GetString 等,都没有解决问题。

最后突然想到,既然我推送的时候可以,为什么接受的时候不可以呢?我按照推送的方式处理呢?

于是,用推送时一样的方式:

function PostJson(strUrl : string; strJson : string): String;
var
clHttpRequest: TclHttpRequest;
clHttp: TclHttp;
strHTML : TStringStream;
begin
clHttpRequest := TclHttpRequest.Create(nil);
clHttpRequest.Header.ContentType :='application/json';
clHttpRequest.Header.CharSet :='UTF-8';
clHttpRequest.BuildJSONRequest(strJson);
clHttp := TclHttp.Create(nil);
clHttp.Request := clHttpRequest;
strHTML := TStringStream.Create('', TEnCoding.UTF8) ;
try
clHttp.Post(strUrl, clHttpRequest, strHTML);
except
on E:Exception do
begin
Result :=E.Message;
FreeAndNil(clHttpRequest);
FreeAndNil(clHttp);
Exit;
end;
end;
Result := strHTML.DataString;
FreeAndNil(strHTML);
FreeAndNil(clHttpRequest);
FreeAndNil(clHttp);
end;

  

问题解决!

  

UTF-8编码的问题的更多相关文章

  1. 从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念

    转(http://www.codeceo.com/article/java-string-ansi-unicode-bmp-utf.html#0-tsina-1-10971-397232819ff9a ...

  2. 文字编码ASCII,GB2312,GBK,GB18030,UNICODE,UCS,UTF的解析

    众所周知,一个文字从输入到显示到存储是有一个固定过程的,其过程为:输入码(根据输入法不同而不同)→机内码(根据语言环境不同而不同,不同的系统语言编码也不一样)→字型码(根据不同的字体而不同)→存储码( ...

  3. 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明   普通的linux 和 普通的windows.    ...

  4. Python里的编码问题

    马克一篇 http://bbs.chinaunix.net/archiver/tid-1163613.html http://www.openhome.cc/Gossip/Python/ImportI ...

  5. JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码

    一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInpu ...

  6. Java中常用的字符编码-解析

    ASCII字符编码 美国信息互换标准代码,为罗马字母编制的一套编码,主要用于表达现代英语和其他西欧语言中的字符,1字节的7位表示一个字符. ISO-8859-1字符编码 ISO为西欧语言中的字符制定的 ...

  7. 请问什么是UTF字符串?

    utf是编码方式,一般而言是国际性质的编码格式,有utf-8,utf-9,utf-16等多种形式,是最高级别的编码方式,也就是说如果你要读取的数据流设置成utf编码的话就要用到相应的编码方式来读取了, ...

  8. python之路--day6--字符编码

    一.知识储备 cpu--控制和运算 内存--暂时存储cpu需要的数据 硬盘--永久保存数据2.文本编辑器的原理存储原理 1,启动文本编辑器 2,在编辑器上输入内容---此时输入内容还在内存上 3,保存 ...

  9. 关于烦躁的网页编码问题utf-8,gb2312。终于自己实践了一遍

    俗话说实践是检验真理的唯一标准,的确如此. 自己一直比较懒,虽然觉得大牛应该一个记事本全部搞定,但自己还是喜欢用Dw或者Vs写好网页的架构,因为总觉得用notepad还要自己导入声明,而gVim还没有 ...

  10. Unicode字符集和UTF-8, UTF-16, UTF-32编码

    ASCII 在过去的计算中,ASCII码被用来表示字符.英语只有26个字母和其他一些特殊字符和符号. 下表提供了ASCII字符及其相应的十进制和十六进制值. 可以从上面的表中推断,在十进制数系统中,A ...

随机推荐

  1. 2025最好的Next.js面试

    2025最好的Next.js面试题(一) 最近在面试,就写一些关于问到的面试题,同时也过一下知识点. 基础概念 什么是Next.js?它与React的关系是什么? Next.js是一个基于React的 ...

  2. docker-compose 启动容器

    docker-compose 是什么 docker-compose 是一个用来把 docker 自动化的东西.有了 docker-compose 你可以把所有繁复的 docker 操作全都一条命令,自 ...

  3. GC面试重点:垃圾回收机制

    你知道哪些垃圾回收算法?垃圾回收从理论上非常容易理解,具体的方法有以下几种: 1. 标记-清除:2. 标记-复制:3. 标记-整理:4. 分代回收. 如何判断一个对象是否应该被回收?这就是所谓的对象存 ...

  4. win10将python打包成apk详细文档

    打包不支持windows所以可以找一台linux的电脑 或者用win10子系统(推荐) 我用的是Ubuntu 方法:https://www.jianshu.com/p/fcf21d45ea74 我简单 ...

  5. (包含5w字提示词开源)手把手教你搭建开源提示词优化平台

    前言:为什么要自己搭建? 各位技术同学们,还在为ChatGPT的网络限制而苦恼吗?还在担心敏感数据泄露给第三方吗?今天给大家带来一个超级实用的解决方案--自部署AI提示词优化平台! 想象一下: 数据完 ...

  6. MongoDB可视化工具

    简单说明 这里使用mongodb的过程中,可以通过mongo shell或者mongo的可视化工具进行连接. mongo shell连接 # 使用root用户登录mongo mongodb@p8lnp ...

  7. php数据结构中的链表

    本文由 ChatMoney团队出品 链表的基本概念 链表(Linked List)是一种常见的数据结构,它由一系列节点组成,每个节点除了存储数据外,还包含指向下一个节点的指针.与数组相比,链表在插入和 ...

  8. Java执行cmd

    JAVA 执行dos命令 String cmd = "ping www.baidu.com"; try { Process process = Runtime.getRuntime ...

  9. 6月23日直播预告丨如何自定义Flink LookupTable

    ​ 数栈是云原生-站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实 ...

  10. 数栈V6.0全新产品矩阵发布,数据底座 EasyMR 焕新升级

    4月20日,袋鼠云成功举行了以"数实融合,韧性生长"为主题的2023春季生长大会.会上,袋鼠云自主研发的一站式大数据基础软件--数栈V6.0产品矩阵全新发布.对旗下大数据基础平台. ...