KETTLE调用http传输中文参数的问题

Posted on Posted in kettle异常

场景:检查服务器异常(hive)服务,就通过http发送一条短信到手机上,内容类似:【通知】${START_DATE}_hive服务检测异常${DB_ID},实现的ktr如下:

http的URL输入内容:http://XXXXXX?__ext=Stats&__tel=XXXX&__content=【通知】${START_DATE}_hive服务检测异常${DB_ID}

处理过程:转变编码格式成GBK或者别的,都是出错;

把中文去掉,只留英文提示,就可以发送成功,说明是中文转码的问题

解决中文转码的问题:在"表输入"控件里面输入中文,传输到col1变量里面,出错时,会看到中文需要转码的格式,如下col1=【通知】_hive服务检测异常,这句会被转换成col1=%E3%80%90%E9%80%9A%E7%9F%A5%E3%80%91_hive%E6%9C%8D%E5%8A%A1%E6%A3%80%E6%B5%8B%E5%BC%82%E5%B8%B8;

可见http需要接收转码好的URL编码方式,ktr的http控件,就需要改成“http://XXXX?__ext=Stats&__tel=XXXXXXX&__content=%E3%80%90%E9%80%9A%E7%9F%A5%E3%80%91_hive%E6%9C%8D%E5%8A%A1%E6%A3%80%E6%B5%8B%E5%BC%82%E5%B8%B8”

相关URL编码方式转码,查看:http://tool.chinaz.com/tools/urlencode.aspx


附上调试出错的

原文链接:https://blog.csdn.net/longzilong216/article/details/52472171