Apabila mencipta boleh laku Go yang mengeluarkan rentetan dikodkan UTF-8 dengan aksara khas, adalah penting untuk mempertimbangkan pengekodan lalai digunakan oleh konsol Windows, iaitu IBM850 (halaman kod 850). Ini boleh membawa kepada output rosak disebabkan pengekodan aksara yang salah.
Untuk memastikan output yang betul dalam konsol Windows, pendekatan berikut boleh dilaksanakan:
<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>
Dengan memanggil fungsi consolePrintString tersuai kami, rentetan dicetak terus ke konsol menggunakan pengekodan aksara yang betul, memastikan output aksara khas yang dijangkakan.
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Rentetan UTF-8 dengan betul dalam Konsol Windows dengan Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!