建立輸出帶有特殊字元的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中文網其他相關文章!