我正在使用一个API,它为其他语言文本返回了类似的内容:
=?UTF 8?B?2KfZhNiu2LfZiNin2Kog2KfZhNiq2Yog2KrYrNmF2Lkg2KjZitmG?= =?UTF 8?B?INit2YHYuCDYp9mE2YLYsdin2ZPZhiDYp9mE2YPYsdmK2YUg2YjZgQ==?= =?UTF 8?B?2YfZhdmHINmF2YXYpyDYp9mU2YXZhNin2Ycg2KfZhNi52YTYp9mF?= =?UTF 8?B?2Kkg2LnYqNivINin2YTZhNmHINin2YTYutiv2YrYp9mGLnBkZg==?=
这是通用格式吗?我将如何在golang中将其转换为常规字符串?
Golang通常可以很好地处理多种语言,但是我不确定如何进行转换。
显然,您的API返回的是以RFC 2047格式编码的数据。基本上,这定义了以下内容:
encoded-word = "=?" charset "?" encoding "?" encoded-text "?="
这意味着您的字符集是UTF-8(非常方便,因为这是Go的本机字符集),而您的编码是Base64。您必须解码的文本是“ B”之间的文本。和“?=“。因此,您要做的就是获取该文本并调用:
base64.StdEncoding.DecodeString(text)
获取原始的UTF-8字符串。
Go stdlibdecodeRFC2047Word()
的net/mail
软件包中有一个函数,支持编码B
和Q
和字符集UTF-8
,US-ASCII
以及ISO-8859-1
。不幸的是,它没有导出,但是您可以根据需要自由地从中获取灵感;)
顺便说一句:我只是注意到示例字符串中的字符集是UTF 8
,这有点奇怪,因为编码的正式名称是UTF-8
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句