java - 在接口中传递中文好不好
巴扎黑
巴扎黑 2017-04-17 15:35:27
[Java讨论组]

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

巴扎黑
巴扎黑

全部回复(2)
高洛峰

不清楚你在说什么接口,暂时理解为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编码为指定字符集的字节数组)方法

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

PHP中文网

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号