Node.js错误的UTF8字符串表示,即使字节码似乎正确

时间:2014-07-23 15:08:33

标签: node.js utf-8 base64

现在已经搜索了一段时间,我相信我的问题可能与其他人的问题没有直接关系。我在表单中使用unicode字符(在客户端使用angularjs),并注意到UTF8字符串没有正确显示在服务器日志上。因此,我决定在提交到服务器(nodejs / express4)之前对客户端的所有字符串进行base64.encode。 JSON数据正确地到达服务器,但是当我尝试使用缓冲区将它从base64转换为UTF8时,我得到不同的符号。我在http://www.base64decode.org/上测试了字符串,它们解码得很好。任何人都可以提出我可能做错的建议吗?

示例char:σ,base64 =“z4M =”。 在服务器上,此行将所有JSON值解码为UTF8:

Object.keys(req.body).forEach(function(key){req.body [key] = new Buffer(req.body [key],'base64')。toString('utf8');}) ;

“σ”字符在服务器上变为“Ο”。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

  

因此我决定在提交到服务器(nodejs / express4)之前对客户端的所有字符串进行base64.encode编码。

没必要,真的。可能你用utf-8 json做错了,现在也错了。 尝试调试它。

  

注意到UTF8字符串没有正确显示在服务器日志上。

他们展示了什么? 在你的操作系统上? 您是否使用十六进制查看器查看日志?

对我而言,这看起来像一个典型的"我有一个问题X,认为我的解决方案有一半,但我遇到了一个子问题Y"。回到X并以正确的方式攻击它(没有base64)。