Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengeluarkan Rentetan UTF-8 dengan betul dalam Konsol Windows dengan Go?

Bagaimana untuk Mengeluarkan Rentetan UTF-8 dengan betul dalam Konsol Windows dengan Go?

Linda Hamilton
Linda Hamiltonasal
2024-11-01 10:55:02918semak imbas

How to Correctly Output UTF-8 Strings in a Windows Console with Go?

Mengoutput Rentetan dengan betul dalam Konsol Windows dengan Go

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn