ホームページ > バックエンド開発 > Golang > HTTP レスポンスボディで生の Unicode を最適に処理するにはどうすればよいですか?

HTTP レスポンスボディで生の Unicode を最適に処理するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-03 14:18:15
オリジナル
346 人が閲覧しました

How to Best Handle Raw Unicode in HTTP Response Bodies?

レスポンスボディで生の Unicode コンテンツを処理する方法

net/http ライブラリを使用して Web API からデータを取得するときに、次のような問題が発生する可能性があります。生の Unicode としてエンコードされたコンテンツ。これは、応答本文の ASCII 文字として現れます。内部に隠された実際のコンテンツを解読するには、Unicode シーケンスをデコードする必要があります。

1 つのアプローチは、bufio.ScanRunes 機能を利用して、個々の Unicode コードポイントを反復処理することです。ただし、場合によっては、このアプローチでは不十分な場合があります。より信頼性の高い方法には、json パッケージなどのツールを使用して、応答本文を構造化オブジェクトにアンマーシャリングすることが含まれます。このプロセスでは Unicode デコードが自動的に処理され、クリーンですぐに使用できるデータが残ります。

たとえば、次のスニペットを使用して、エスケープされた Unicode 文字を含む JSON データをアンマーシャリングできます。

func main() {
    var i interface{}
    err := json.Unmarshal([]byte(src), &i)
    fmt.Println(err, i)
}

const src = `{"forum":{"id":"3251718","name":"\u5408\u80a5\u5de5\u4e1a\u5927\u5b66\u5ba3\u57ce\u6821\u533a","first_class":"\u9ad8\u7b49\u9662\u6821","second_class":"\u5b89\u5fbd\u9662\u6821","is_like":"0","user_level":"1","level_id":"1","level_name":"\u7d20\u672a\u8c0b\u9762","cur_score":"0","levelup_score":"5","member_num":"80329","is_exists":"1","thread_num":"108762","post_num":"3445881","good_classify":[{"class_id":"0","class_name":"\u5168\u90e8"},{"class_id":"1","class_name":"\u516c\u544a\u7c7b"},{"class_id":"2","class_name":"\u5427\u53cb\u4e13\u533a"},{"class_id":"4","class_name":"\u6d3b\u52a8\u4e13\u533a"},{"class_id":"6","class_name":"\u793e\u56e2\u73ed\u7ea7"},{"class_id":"5","class_name":"\u8d44\u6e90\u5171\u4eab"},{"class_id":"8","class_name":"\u6e29\u99a8\u751f\u6d3b\u7c7b"},{"class_id":"7","class_name":"\u54a8\u8be2\u65b0\u95fb\u7c7b"},{"class_id":"3","class_name":"\u98ce\u91c7\u5c55\u793a\u533a"}]}}`
ログイン後にコピー

出力:

<nil> map[forum:map[levelup_score:5 is_exists:1 post_num:3445881 good_classify:[map[class_id:0 class_name:全部] map[class_id:1 class_name:公告类] map[class_id:2 class_name:吧友专区] map[class_id:4 class_name:活动专区] map[class_id:6 class_name:社团班级] map[class_id:5 class_name:资源共享] map[class_id:8 class_name:温馨生活类] map[class_name:咨询新闻类 class_id:7] map[class_id:3 class_name:风采展示区]] id:3251718 is_like:0 cur_score:0
ログイン後にコピー

また、サードパーティのライブラリを使用せずに特定の Unicode シーケンスをデコードするには、 strconv.Unquote() 関数:

fmt.Println(strconv.Unquote(`"\u7d20\u672a\u8c0b"`))
ログイン後にコピー

出力:

素未谋面 <nil>
ログイン後にコピー

以上がHTTP レスポンスボディで生の Unicode を最適に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート