特殊文字を含む UTF-8 エンコード文字列を出力する Go 実行可能ファイルを作成する場合は、デフォルトのエンコードを考慮することが重要ですWindows コンソール (IBM850 (コード ページ 850)) で使用されます。これにより、文字エンコーディングが正しくないために出力が破損する可能性があります。
Windows コンソールで適切な出力を確保するには、次のアプローチを実装できます。
<code class="go">package main import ( "syscall" "unsafe" "unicode/utf16" ) // Retrieve a function pointer from the kernel32.dll library. var procWriteConsoleW = syscall.NewProc("WriteConsoleW") // Custom function to print strings directly to the console. func consolePrintString(strUtf8 string) { // Encode the string into UTF-16 for Windows console compatibility. var strUtf16 []uint16 strUtf16 = utf16.Encode([]rune(strUtf8)) if len(strUtf16) < 1 { return } // Initialize the number of characters written to zero. var charsWritten uint32 = 0 // Call WriteConsoleW to print 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(&charsWritten)), uintptr(0), 0) } func main() { // Example strings to output to the console. consolePrintString("Hello ☺\n") consolePrintString("éèïöîôùòèìë\n") }</code>
カスタム consolePrintString 関数を呼び出すことにより、文字列は正しい文字エンコーディングを使用してコンソールに直接出力され、特殊文字の期待どおりの出力が保証されます。
以上がGo を使用して Windows コンソールで UTF-8 文字列を正しく出力するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。