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

Linda Hamilton
Lepaskan: 2024-11-01 10:55:02
asal
837 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!