我必须将欧元符号发送到短信中。我得到了一些这样做的步骤,它们是:
- 将€符号转换为十六进制,即:20AC
- 将20AC编码成base64,应该是:IKw=
但是当我这样做时,使用我找到的任何在线工具,我总是得到 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 转换才能获得预期的结果?