首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

解决 web api 填写问题批注的乱码问题

使用 Web api 的 update_status 可以修改问题的状态并填写批注:

但是,如果写入的是中文的批注,如果不注意,会产生乱码:

原因是在提交 web api 请求的时候,没有处理好编码的问题。

Klocwork Database 使用 utf-8 编码存储数据,因此,最方便的解决方法是统一使用 utf-8 编码来编写脚本、命令、和提交请求。我们分别看 curl 和 python脚本的情况。

【curl 的情况】

使用 curl 命令访问 web api 是轻量级的访问方式,方法简单易行,适合简单场景和程序调试。使用的 curl 命令中的 http 请求里面如果有多字节编码,需要指定多字节的编码格式,然后系统会自动将指定的编码格式转换成 utf-8。比如:在windows 下,缺省的命令行窗口字符集是 GBK,那么需要通过设置 http 请求的 header 来指定字符集编码:

curl --data "action=update_status&user=haojc&project=afd&ids=48&status=Fix&comment=立即修复&owner=haojc" -H "Content-Type: application/x-www-form-urlencoded;charset=GBK" http://haojcpc:8090/review/api

这样,就可以将 “立即修复” 从GBK 转换为 UTF-8,存入的注解就不会是乱码。

【python 的情况】

使用 python 访问 web api 适合具有复杂处理的情况,利用 python 脚本的灵活性来获得丰富的功能。

同样的道理,如果处理不当,python 的 web api 访问也会出现乱码。要解决 python web api 处理的乱码问题,需要注意三个方面:

(1)python 脚本的文件本身的编码采用 utf-8 编码:

比如,用 Notepad++,设置:

(2)python 脚本文件里面设置编码格式指令:

在 python 脚本文件开头,指定 # -*- coding: utf8 -*-

然后,在使用多字节字符的地方,使用 setdefaultencoding 指定要采用的多字节编码,并在输入多字节编码的时候,使用 u' 进行 utf-8 编码。

reload(sys)

sys.setdefaultencoding('utf8')

values["ids"] = "48"

values["status"] = "Fix"

values["comment"]= u'请尽快修复此缺陷' ## 用 u'指定为 utf-8 编码

print(values["comment"])

data = urllib.urlencode(values)

req = urllib2.Request(url, data)

更重要的是,一定要在 http 请求上,设置Content-type为: 'application/x-www-form-urlencoded;charset=UTF-8'

req.add_header('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8')

整体看起来是这样:

这样,就能得到没有乱码的中文写入了:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180303G0ZJ1O00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券