UTF-8编码的问题
在工作中,经常需要用到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编码的问题的更多相关文章
- 从Java String实例来理解ANSI、Unicode、BMP、UTF等编码概念
转(http://www.codeceo.com/article/java-string-ansi-unicode-bmp-utf.html#0-tsina-1-10971-397232819ff9a ...
- 文字编码ASCII,GB2312,GBK,GB18030,UNICODE,UCS,UTF的解析
众所周知,一个文字从输入到显示到存储是有一个固定过程的,其过程为:输入码(根据输入法不同而不同)→机内码(根据语言环境不同而不同,不同的系统语言编码也不一样)→字型码(根据不同的字体而不同)→存储码( ...
- 字符集、字符编码、国际化、本地化简要总结(UNICODE/UTF/ASCII/GB2312/GBK/GB18030)
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 环境说明 普通的linux 和 普通的windows. ...
- Python里的编码问题
马克一篇 http://bbs.chinaunix.net/archiver/tid-1163613.html http://www.openhome.cc/Gossip/Python/ImportI ...
- JAVA基础学习day22--IO流四-对象序列化、管道流、RandomAccessFile、DataStream、ByteArrayStream、转换流的字符编码
一.对象序列化 1.1.对象序列化 被操作的对象需要实现Serializable接口 1.2.对象序列化流ObjectOutputStream与ObjectInputStream ObjectInpu ...
- Java中常用的字符编码-解析
ASCII字符编码 美国信息互换标准代码,为罗马字母编制的一套编码,主要用于表达现代英语和其他西欧语言中的字符,1字节的7位表示一个字符. ISO-8859-1字符编码 ISO为西欧语言中的字符制定的 ...
- 请问什么是UTF字符串?
utf是编码方式,一般而言是国际性质的编码格式,有utf-8,utf-9,utf-16等多种形式,是最高级别的编码方式,也就是说如果你要读取的数据流设置成utf编码的话就要用到相应的编码方式来读取了, ...
- python之路--day6--字符编码
一.知识储备 cpu--控制和运算 内存--暂时存储cpu需要的数据 硬盘--永久保存数据2.文本编辑器的原理存储原理 1,启动文本编辑器 2,在编辑器上输入内容---此时输入内容还在内存上 3,保存 ...
- 关于烦躁的网页编码问题utf-8,gb2312。终于自己实践了一遍
俗话说实践是检验真理的唯一标准,的确如此. 自己一直比较懒,虽然觉得大牛应该一个记事本全部搞定,但自己还是喜欢用Dw或者Vs写好网页的架构,因为总觉得用notepad还要自己导入声明,而gVim还没有 ...
- Unicode字符集和UTF-8, UTF-16, UTF-32编码
ASCII 在过去的计算中,ASCII码被用来表示字符.英语只有26个字母和其他一些特殊字符和符号. 下表提供了ASCII字符及其相应的十进制和十六进制值. 可以从上面的表中推断,在十进制数系统中,A ...
随机推荐
- .NET外挂系列:8. harmony 的IL编织 Transpiler
一:背景 1. 讲故事 前面文章所介绍的一些注入技术都是以方法为原子单位,但在一些罕见的场合中,这种方法粒度又太大了,能不能以语句为单位,那这个就是我们这篇介绍的 Transpiler,它可以修改方法 ...
- IntelliJ IDEA 2023.1 破解教程mac,windows,linux均适用/JetBrains产品全版本激活
前言 该激活方式不限于IDEA,同样也适用于JetBrains 全家桶的所有工具, 包括 IntelliJ IDEA.Pycharm.WebStorm.PhpStorm.AppCode.Datagri ...
- php数据结构中的链表
本文由 ChatMoney团队出品 链表的基本概念 链表(Linked List)是一种常见的数据结构,它由一系列节点组成,每个节点除了存储数据外,还包含指向下一个节点的指针.与数组相比,链表在插入和 ...
- 尤雨溪:Vue3.0正式全球发布会_2020
本文只是针对视频内容的重点整理,如若不清楚的地方请看文末链接的现场视频内容. 性能方面的优化 路由懒加载 keep-alive缓存页面 使用v-show复用DOM v-for 遍历避免同时使用 v-i ...
- 干货大分享!带你了解数栈批流统一的高效数据同步插件—FlinkX
一.什么是FlinkX FlinkX是一款基于Flink的分布式离线/实时数据同步插件,可实现多种异构数据源高效的数据同步,其由袋鼠云于2016年初步研发完成,目前有稳定的研发团队持续维护,已在Git ...
- 袋鼠云批流一体分布式同步引擎ChunJun(原FlinkX)的前世今生
一.前言 ChunJun(原FlinkX)是一个基于Flink提供易用.稳定.高效的批流统一的数据集成工具,是袋鼠云一站式大数据开发平台-数栈DTinsight的核心计算引擎,其技术架构基于实 ...
- 杭州联合银行 x 袋鼠云:打造智能标签体系,助力银行大零售业务转型
"智能标签平台上线后,支行及业务部门已创建多个客群用于营销,为我行客户精细化管理打下了良好基础." 杭州联合银行始终以服务市民.小微企业.经济组织和地方经济发展为己任,本着&quo ...
- DotTrace系列:6. 程序异常诊断 和 Request慢处理
一:背景 1. 讲故事 在我分析的众多dump中,有一些CPU爆高是因为高频的抛 Exception 导致,比如下面这张图,有 19 个线程都在抛 xxxResultException 异常. 从卦中 ...
- Codeforces Round #619 (Div. 2) ABC 题解
A. Three Strings 题意:每次可以把c[i]拿去和a[i]或b[i]交换. 问你能否把ab变成相等. 思路:在ab不相等的时候看看c能不能与一方相等来中和.不能的话就不行. view c ...
- wav 音频解析
简介 本人要在js前端解析wav文件所以要了解一下wav文件的格式还好不是特别难. 废话不多说开始解析 wav 文件 分析软件 dumphex vscode插件 分析标准文件 00000000: 52 ...