ホームページ >バックエンド開発 >Golang >Go を使用して Windows コンソールで UTF-8 文字列を正しく表示するにはどうすればよいですか?

Go を使用して Windows コンソールで UTF-8 文字列を正しく表示するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-03 09:08:03822ブラウズ

How to Display UTF-8 Strings Correctly in Windows Consoles Using Go?

Go を使用して Windows コンソールで文字列を正しく出力する方法

コンソール ウィンドウに UTF-8 でエンコードされた文字列を出力する Go プログラムを実行する場合Windows では、エンコード標準の違いにより、出力が文字化けして見える場合があります。通常、Windows は IBM850 エンコーディングを使用しますが、Go はデフォルトで UTF-8 を使用します。

この問題に対処し、文字列がコンソール ウィンドウに正しく出力されるようにするには:

consolePrintString 関数を使用します。

提供されたコードは、Windows 固有の環境で文字列出力を処理するために文書化されていないが効果的なメソッドを使用する consolePrintString という関数を定義します。

Convert UTF-8 to UTF- 16:

consolePrintString 関数内で、入力された UTF-8 文字列は、unicode/utf16 パッケージの Encode 関数を使用して UTF-16 に変換されます。 UTF-16 は、コンソール出力の推奨エンコーディングです。

コンソールへの書き込み:

kernel32.dll ライブラリの WriteConsoleW 関数は、UTF-16 の書き込みに使用されます。コンソールへの文字列。コンソール ハンドル、文字列データのアドレス、文字列の長さ、書き込まれた文字数を記録するためのポインタを指定するパラメータを受け取ります。

使用例:

提供された main 関数では、consolePrintString 関数を使用して 2 つの文字列「Hello ☺」と「éèïöîôùòèìë」が出力されます。これらの文字列はコンソール ウィンドウに正しく表示されるはずです。

注:

このメソッドは文書化されていない API を使用しており、stdout リダイレクトやエラーなどのさまざまなシナリオは処理しません。取り扱い。制限事項を理解し、注意して使用してください。

以上がGo を使用して Windows コンソールで UTF-8 文字列を正しく表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。