新手问题 [字符集问题?] rails c 和代码的结果不一致

xofred2 · 发布于 2017年1月11日 · 最后由 hiveer 回复于 2017年1月13日 · 308 次阅读
96

有个地方需要用合作方提供的签名程序生成签名。由于程序是个jar包,我用IO.popen调用

# key 固定
# message 参数Hash to_json
sign = IO.popen(["java", "-jar", "#{Rails.root}/lib/sign.jar", key, message]).read.gsub("\n", "")

并把参数和签名输出到日志

D, [2017-01-11T17:04:52.852529 #3898] DEBUG -- : message:
D, [2017-01-11T17:04:52.852572 #3898] DEBUG -- : {"touristList":[{"name":"fu/ting","firstname":"fu","lastname":"ting","psptType":"2","psptId":"quirky","birthday":"1990-12-22","tel":"","touristType":0,"psptEndDate":"2025-12-22","sex":1,"hkvisaType":0,"macvisaType":0,"hkmacIssueOrgan":"","issueOrgan":"0","country":"中国"}]}
D, [2017-01-11T16:57:37.236836 #3898] DEBUG -- : sign:
D, [2017-01-11T16:57:37.236836 #3898] DEBUG -- : lQHTGqE0nLjy3Z6OTlIULT3pvdvizWgoLg2qZFM1BIJ80ERlrdudKCvm8Rgbs9LqsDs3SPfjRXWOJvEJUW0PMg==

发现只要参数里面包含中文的话,生成的签名就不对。

但是,当我把日志的参数原封不动复制到rails c执行时,生成的签名却是对的。。

message:
{"touristList":[{"name":"fu/ting","firstname":"fu","lastname":"ting","psptType":"2","psptId":"quirky","birthday":"1990-12-22","tel":"","touristType":0,"psptEndDate":"2025-12-22","sex":1,"hkvisaType":0,"macvisaType":0,"hkmacIssueOrgan":"","issueOrgan":"0","country":"中国"}]}
sign:
Yi7thHvFlJZ45s4bXPMqK2JPN0BELF7HyJrWs6wETrkmGJI24DcEctO8/ribSAGSr6Z/AdA0qXOu7K/nNFBR+Q==

想不通

共收到 3 条回复
96
jackyip · #1 · 2017年1月11日

應該是前后空格引起的

96
jackyip · #2 · 2017年1月11日

 解密後看看是否多了個空格

6829
hiveer · #3 · 2017年1月13日

感觉是编码问题

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册