首页 > 在接口中传递中文好不好

在接口中传递中文好不好

如题,在接口中传递中文好不好,会不会效率低,乱码多情况等


效率不是问题,主要是看你的接口是设计给谁的。

如果是一个开放平台的接口,如果是和业务逻辑相关的字段,不建议传递需要解码的中文。有时候乱码并不是由于接口或终端本身的编码导致的,很多乱码问题都出在数据传递的中间层。作为一个开放平台,你无法预计使用你接口的人处于何种环境中。举个栗子,某个用户使用了转发代理来处理平台的接口数据,而写代理的那个人在没有注意的情况下调用了系统的自动解码,造成的结果就是用户无论如何调试,都无法正确解码。(不要问我是怎么知道的)

如果是一个完全封闭的接口,那么你喜欢就好,只要平台和终端能对上编码,环境又相对固定,随你怎么玩。


不清楚你在说什么接口,暂时理解为HTTP Web服务提供的接口(包括restful等),当然了,正确的做法也应该是把中文进行urlencode编码或者json的ascii编码

认为中文对效率产生影响是很没道理的,一样是二进制数据,对于机器来说没啥差别(确实中文会产生一些额外的转码的成本,不过对于性能的影响你可以忽略不计)

遭遇乱码大多数情况下是对Java的编码机制不了解导致的。首先Java内部String是以Unicode存储的字符。然后不管你是从磁盘IO也好,从网络请求也好,原始得到的数据其实都是存储在byte数组,也就是二进制的原始数据,这个中间到String,其实有一个解码的过程。只要你清楚传输过来的byte数组所使用的编码是什么(例如UTF8, GB18030,BIG5等等),关于这个,你可以看下String构造方法中的String(byte[] bytes, Charset charset)和String的getBytes(Charset charset)(此方法把Unicode的String编码为指定字符集的字节数组)方法

只要你能正确区分字符和字节这两个概念了,其实对于所谓乱码问题也就不再会太感到困惑了

【热门文章】
【热门文章】