解密散列后,方法decrypt(hash[field])返回:
"100\xE2\x80\x90111\xE2\x80\x9010333\xE2\x80\x900012"但是使用puts decrypt(hash[field])会给出正确的结果
'100‐111‐10333‐0012'如何解决这一问题?
发布于 2022-06-06 18:18:20
您的decrypt方法是返回二进制数据,而不是您所期望的UTF-8编码字符串。字节"\xE2\x80\x90"是‐
puts '‐'.bytes.map { |b| b.to_s(16) }
# e2
# 80
# 90或者:
puts '‐'.force_encoding('binary').inspect
# "\xE2\x80\x90"如果您确实得到了一个UTF-8字符串,那么修复编码:
# UTF-8 is the default so we force binary to start
bytes = "100\xE2\x80\x90111\xE2\x80\x9010333\xE2\x80\x900012".force_encoding('binary')
# "100\xE2\x80\x90111\xE2\x80\x9010333\xE2\x80\x900012"
puts bytes.force_encoding('utf-8')
# 100‐111‐10333‐0012https://stackoverflow.com/questions/72521710
复制相似问题