具体转换代码</h1>
<pre><code class="lang-go hljs"><span class="token keyword">func</span> <span class="token function">handleResponse</span><span class="token punctuation">(</span>resp <span class="token operator">*</span>http<span class="token punctuation">.</span>Response<span class="token punctuation">)</span> <span class="token punctuation">(</span><span class="token builtin">string</span><span class="token punctuation">,</span> <span class="token builtin">error</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
respBytes<span class="token punctuation">,</span> err <span class="token operator">:=</span> ioutil<span class="token punctuation">.</span><span class="token function">ReadAll</span><span class="token punctuation">(</span>resp<span class="token punctuation">.</span>Body<span class="token punctuation">)</span>
<span class="token keyword">defer</span> resp<span class="token punctuation">.</span>Body<span class="token punctuation">.</span><span class="token function">Close</span><span class="token punctuation">(</span><span class="token punctuation">)</span>
<span class="token keyword">if</span> err <span class="token operator">!=</span> <span class="token boolean">nil</span> <span class="token punctuation">{</span>
fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>err<span class="token punctuation">.</span><span class="token function">Error</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span>
<span class="token keyword">return</span> <span class="token string">""</span><span class="token punctuation">,</span> err
<span class="token punctuation">}</span>
<span class="token comment">//byte数组直接转成string,优化内存</span>
str <span class="token operator">:=</span> <span class="token punctuation">(</span><span class="token operator">*</span><span class="token builtin">string</span><span class="token punctuation">)</span><span class="token punctuation">(</span>unsafe<span class="token punctuation">.</span><span class="token function">Pointer</span><span class="token punctuation">(</span><span class="token operator">&</span>respBytes<span class="token punctuation">)</span><span class="token punctuation">)</span>
result <span class="token operator">:=</span> <span class="token function">unicode2utf8</span><span class="token punctuation">(</span><span class="token operator">*</span>str<span class="token punctuation">)</span>
fmt<span class="token punctuation">.</span><span class="token function">Println</span><span class="token punctuation">(</span>result<span class="token punctuation">)</span>
<span class="token keyword">return</span> result<span class="token punctuation">,</span> <span class="token boolean">nil</span>
<span class="token punctuation">}</span>
<span class="token keyword">func</span> <span class="token function">unicode2utf8</span><span class="token punctuation">(</span>source <span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token builtin">string</span> <span class="token punctuation">{</span>
<span class="token keyword">var</span> res <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token builtin">string</span><span class="token punctuation">{</span><span class="token string">""</span><span class="token punctuation">}</span>
sUnicode <span class="token operator">:=</span> strings<span class="token punctuation">.</span><span class="token function">Split</span><span class="token punctuation">(</span>source<span class="token punctuation">,</span> <span class="token string">"\\u"</span><span class="token punctuation">)</span>
<span class="token keyword">var</span> context <span class="token operator">=</span> <span class="token string">""</span>
<span class="token keyword">for</span> <span class="token boolean">_</span><span class="token punctuation">,</span> v <span class="token operator">:=</span> <span class="token keyword">range</span> sUnicode <span class="token punctuation">{</span>
<span class="token keyword">var</span> additional <span class="token operator">=</span> <span class="token string">""</span>
<span class="token keyword">if</span> <span class="token function">len</span><span class="token punctuation">(</span>v<span class="token punctuation">)</span> <span class="token operator"><</span> <span class="token number">1</span> <span class="token punctuation">{</span>
<span class="token keyword">continue</span>
<span class="token punctuation">}</span>
<span class="token keyword">if</span> <span class="token function">len</span><span class="token punctuation">(</span>v<span class="token punctuation">)</span> <span class="token operator">></span> <span class="token number">4</span> <span class="token punctuation">{</span>
rs <span class="token operator">:=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token function">rune</span><span class="token punctuation">(</span>v<span class="token punctuation">)</span>
v <span class="token operator">=</span> <span class="token function">string</span><span class="token punctuation">(</span>rs<span class="token punctuation">[</span><span class="token punctuation">:</span><span class="token number">4</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
additional <span class="token operator">=</span> <span class="token function">string</span><span class="token punctuation">(</span>rs<span class="token punctuation">[</span><span class="token number">4</span><span class="token punctuation">:</span><span class="token punctuation">]</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
temp<span class="token punctuation">,</span> err <span class="token operator">:=</span> strconv<span class="token punctuation">.</span><span class="token function">ParseInt</span><span class="token punctuation">(</span>v<span class="token punctuation">,</span> <span class="token number">16</span><span class="token punctuation">,</span> <span class="token number">32</span><span class="token punctuation">)</span>
<span class="token keyword">if</span> err <span class="token operator">!=</span> <span class="token boolean">nil</span> <span class="token punctuation">{</span>
context <span class="token operator"> =</span> v
<span class="token punctuation">}</span>
context <span class="token operator"> =</span> fmt<span class="token punctuation">.</span><span class="token function">Sprintf</span><span class="token punctuation">(</span><span class="token string">"%c"</span><span class="token punctuation">,</span> temp<span class="token punctuation">)</span>
context <span class="token operator"> =</span> additional
<span class="token punctuation">}</span>
res <span class="token operator">=</span> <span class="token function">append</span><span class="token punctuation">(</span>res<span class="token punctuation">,</span> context<span class="token punctuation">)</span>
<span class="token keyword">return</span> strings<span class="token punctuation">.</span><span class="token function">Join</span><span class="token punctuation">(</span>res<span class="token punctuation">,</span> <span class="token string">""</span><span class="token punctuation">)</span>
<span class="token punctuation">}</span>
</code></pre>
<blockquote class="layui-elem-quote" style="width: 100%;overflow:hidden">
作者: VN2015
链接: https://blog.csdn.net/VN2015/article/details/105083937
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
</blockquote>
到此这篇关于“golang unicode转utf-8”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!
您可能感兴趣的文章:
php对unicode转utf-8编码
python如何解决中文乱码问题
Python中的gbk怎么转化成utf
详细阐述PHP环境下如何将GBK编码转成UTF-8格式
php中UNICODE 编码与解码的二个例子
PHP6的新特性:Unicode和TextIterator
golang处理0x08不可见unicode字符
Golang基础 (字符型[byte和rune])
修改Go语言(golang)编译器源代码让它支持UTF-8 BOM
详解json.dumps中文乱码问题