帮朋友搞得一段程序,是易语言环境的post,我要传递一串带有中文的JSON给node服务器.字符串如下
{"itemdata":{"nType":"1","nBaoYou":"0","szItemId":"536347062406","title":"秋冬新款女装韩版半高领毛 衣女加厚修身显瘦长袖套头针织衫打底衫","secondTitle":"","imgURL":"http://img4.tbcdn.cn/tfscom/i1/TB1OniJLXXXXXXzXpXXXXXXXXXX_!!0-item_pic.jpg","promotionTxt":"限时秒杀价","fOldPrice":"108","fThirdPrice":"0","fCommissionPer":"10.5","fCommission":"2.08","nTgCount":"0","nSellCount":"37","fPingFen":"0","nPingjiaCount":"5","szTgURL":"","szWebTgURL":"","szBlogTgURL":"","shortUrl":"","szDesc":"","nick":"艾伦圣玛旗舰店","coupon":""}}
然后,服务器接受到以后显示的是乱码,
然后用postman 测试发现只有raw json 才能正确发送和接收,
于是我上网查什么是raw ,查到是不进行任何数据编码传送,直接传递数据,
最后我想到,难道是语言环境的文本编码问题?
因为postman 是js 写的,所以Postman 没有语言环境编码的差异,
所以才会正常传送?如果是这样理论上发送的时候把发送环境的编码弄成和js 一样的编码应该也可以呀?
于是我想请问,如何做才能像js 一样只在发送端处理成为正确的json 就可以解决编码问题?
因为如果转码成utf8 的话,服务端还是要再解码一遍.作为一个技术,不想放弃最优方案.所以请问大神如何解决?
我也有这个问题,不知道楼主解决了没有,过滤器也加了,服务器的配置也写了,还是乱码、、
-----------------------------------华丽的分割线------------------------------
调了一上午我发现我的问题在哪里了
代码中通过以上方式将请求的内容转换为字符串
没有指定字符集,通过源码看到使用了默认的字符集,sun.nio.cs.StreamDecoder类如下方法
然后我本地环境的默认字符集是GBK,然后解码时导致乱码
可以通过设置JVM参数,-Dfile.encoding=UTF-8
强制将默认字符集调整为UTF-8,然后顺利的解决了我的问题