我得把欧元签发短信。我得到了一些这样做的步骤,它们是:
但是当我这样做的时候,使用我找到的任何在线工具,我总是得到MjBBQw==,这与python返回的结果相同。你知道吗
所以我发现在十六进制和base64之间缺少某种字符编码。你知道吗
我的Python代码如下:
def encodeGSM7Message( text ):
text = unicode( text, 'UTF-8' )
hex_text = ''.join( [ hex( ord( c ) ).rstrip('L').lstrip('0x').upper() for c in text ] )
return base64.b64encode( hex_text )
print encodeGSM7Message( '€' ), 'IKw='
这个东西应该打印IKw= IKw=
,但是它可以打印到MjBBQw== IKw=
。你知道吗
另一个例子是,他们在字符串中添加了¨,因此我还有一个额外的代码行,如下所示:
print encodeGSM7Message( '€ÑÑ' ), 'IKwA0QDR'
但是它不再打印IKwA0QDR IKwA0QDR
,这应该是一个值得关注的行为,而是结束打印MjBBQ0QxRDE= IKwA0QDR
你知道我遗漏了什么,或者应该进行什么样的unicode转换才能得到预期的结果吗?你知道吗
试试这个:
注意
coding: utf-8
使euro
变量utf-8编码,这就是为什么我们必须在encodeGSM7Message例程中.decode('utf8')
。你知道吗从结果向后看,他们需要utf-16大端编码。你知道吗
您不需要显式转换为十六进制。但是,您确实需要将16位unicode字符重新解释为2个8位字符:
相关问题 更多 >
编程相关推荐