Windows コンソールで表示するための UTF-8 文字列のエンコード
Windows コンソールで Go 実行可能ファイルを実行すると、特殊文字を含む文字列が表示される場合がありますコンソールのデフォルトの IBM850 エンコーディングが原因で壊れています。文字列が正しくエンコードされ、表示されていることを確認する方法は次のとおりです。
解決策:
kernel32.dll ライブラリの WriteConsoleW 関数を利用してワイド文字 (UTF-16) を書き込みます。 ) デフォルトのエンコーディングをバイパスして、文字列をコンソールに直接送信します。
実装:
<code class="go">import ( "syscall" "unicode/utf16" "unsafe" ) // Declare the WriteConsoleW function var procWriteConsoleW = syscall.NewLazyDLL("kernel32.dll").NewProc("WriteConsoleW") // Define a function to print a UTF-8 string to the console func consolePrintString(strUtf8 string) { // Convert the UTF-8 string to UTF-16 strUtf16 := utf16.Encode([]rune(strUtf8)) // Write the UTF-16 string to the console syscall.Syscall6(procWriteConsoleW.Addr(), 5, uintptr(syscall.Stdout), uintptr(unsafe.Pointer(&strUtf16[0])), uintptr(len(strUtf16)), uintptr(unsafe.Pointer(nil)), uintptr(0), 0) }</code>
例:
<code class="go">package main import "fmt" func main() { consolePrintString("Hello ☺\n") consolePrintString("éèïöîôùòèìë\n") }</code>
このアプローチは、コンソールのデフォルトのエンコーディングをバイパスし、特殊文字を含む文字列が正しく表示されるようにします。これは Windows 固有であり、文書化されていないメソッドの使用が含まれることに注意してください。
以上がWindows コンソールで UTF-8 文字列を正しく表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。