在工作中,经常需要用到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. Disruptor—1.原理和使用简介

    大纲 1.Disruptor简介 2.Disruptor和BlockingQueue的压测对比 3.Disruptor的编程模型 4.Disruptor的数据结构与生产消费模型 5.RingBuffe ...

  2. python doc转png踩坑历程分享

    首先python根据文本内容生成doc,使用的是python-docx库,使用示例如下: from docx import Document from docx.shared import Pt, R ...

  3. git基础及gitee配置

    安装git 网址:https://git-scm.com/book/zh/v2/起步-安装-Git 使用git 基本指令 # 初始化指令 git init # 管理目录下的文件状态 注:新增文件和修改 ...

  4. Spring扩展接口-FactoryBean

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  5. 探秘Transformer系列之(36)--- 大模型量化方案

    探秘Transformer系列之(36)--- 大模型量化方案 目录 探秘Transformer系列之(36)--- 大模型量化方案 0x00 概述 0x01 8位量化 1.1 LLM.int8() ...

  6. 数栈技术文章分享:你居然是这样的initialValue

    先说一下写着篇文章的契机,是因为回显,复杂表单的回显,让我觉得我对initialValue这个属性是有误解的. 一.initialValue的出处和定义 initialValue的出处: AntDes ...

  7. veRL代码阅读-2.Ray

    看VeRL代码之前发现代码里主要使用了ray框架来进行调度和通信. 所以先对ray进行初步学习, 后续有空闲时间再细看下Ray的代码. 框架原理 构成 架构图如下, ray里主要分为系统层面的laye ...

  8. Django实战:HTTP状态码与业务状态码的分层设计与实战应用

    一.HTTP 状态码 介绍 HTTP响应状态码是用以表示网页服务器HTTP响应状态的3位数字代码.它由HTTP协议定义,用于描述请求 - 响应过程中的各种状态,帮助客户端(如浏览器)理解服务器的响应结 ...

  9. 串口转WIFI模块

    串口转WIFI模块ZLSN7046T是上海卓岚生产的一款多功能wifi转串口模块.它能够将wifi信号转化为串口信号,且支持多种功能,邮票孔封装,体积小巧可以外置天线或者内置天线.ZLAN7046T支 ...

  10. ORACLE--SQL日常问题和技巧2(自定义排序,递归查询,异常ORA-01747,逗号隔开的字符串转成in条件,用符号连接表中某字段)

    1.有些情况需要将几条记录按要求排序,适用于少量要求 表如图所示: 按照e,u,r,o,t,w,q,y,i顺序排序: 1 SELECT 2 * 3 FROM 4 LGQ_TEST 5 ORDER BY ...