>백엔드 개발 >Golang >golang이 중국어 왜곡 문자를 출력합니다.

golang이 중국어 왜곡 문자를 출력합니다.

王林
王林원래의
2023-05-10 13:10:391327검색

golang 개발시 출력 인코딩을 설정하지 않으면 한자가 깨져 나오는 문제가 발생할 수 있습니다. 아래에서는 출력 인코딩 원리와 출력 인코딩 설정이라는 두 가지 측면에서 golang이 중국어 왜곡 문자를 출력하는 문제를 해결하는 방법을 소개하겠습니다.

1. 출력 인코딩 원리

golang에서는 한자를 포함한 모든 문자열이 UTF-8 인코딩으로 저장됩니다. UTF-8은 유니코드 표준의 모든 문자를 나타낼 수 있는 가변 길이 유니코드 인코딩입니다. 따라서 우리가 golang 프로그램에서 사용하는 한자는 실제로 UTF-8 인코딩 형태로 메모리에 저장됩니다.

golang으로 작성된 프로그램을 터미널, 파일, 웹 페이지 또는 기타 출력 장치로 출력해야 할 경우 UTF-8 인코딩을 대상 인코딩으로 변환해야 합니다. 일반적으로 터미널이나 파일 출력 장치는 기본적으로 로컬 인코딩을 사용하여 텍스트를 출력합니다. 예를 들어, Windows 운영 체제는 기본적으로 GBK 인코딩을 사용하고 Linux 운영 체제는 기본적으로 UTF-8 인코딩을 사용합니다.

golang 프로그램의 UTF-8 인코딩이 출력 시 올바르게 변환되지 않으면 중국어 깨짐 문자가 나타날 수 있습니다. 이는 대상 인코딩이 UTF-8 인코딩의 중국어 문자를 올바르게 인식할 수 없어 출력 텍스트가 올바르게 표시되지 않기 때문입니다.

따라서 golang이 한자를 깨뜨려 출력하는 문제를 해결하려면 대상 인코딩이 UTF-8로 인코딩된 한자를 올바르게 인식할 수 있도록 출력 인코딩을 설정해야 합니다.

2. 출력 인코딩 설정

golang에서는 출력 장치에 따라 출력 인코딩을 설정하는 방법이 다릅니다. 아래에서는 터미널, 파일, 웹페이지의 출력 인코딩을 각각 설정하는 방법을 소개합니다.

  1. 터미널 출력 인코딩 설정

golang에서는 fmt 패키지의 Println 메서드를 사용하여 터미널에 문자열을 출력합니다. 터미널의 출력 인코딩을 설정해야 하는 경우 os.Stdout 속성의 Fprintln 메서드를 사용하고 형식 매개변수를 설정할 수 있습니다.

예를 들어 Windows 시스템에서는 다음과 같이 터미널 출력 인코딩을 GBK 코드로 설정합니다.

package main

import (
    "fmt"
    "os"
)

func main() {
    stdout := os.Stdout

    fmt.Println("Hello 世界!")
}

그런 다음 fmt 패키지의 Println 메서드를 사용하여 UTF-8로 인코딩된 중국어 문자열 "Hello World!"를 출력합니다.

위 코드를 실행하면 터미널 출력 결과는 다음과 같습니다.

123
Hello 世界!
  1. 파일 출력 인코딩 설정

golang에서는 os 패키지의 Create 메서드를 사용하여 파일을 생성하고 NewWriter 메서드를 사용하여 bufio 패키지를 사용하여 버퍼링된 파일 쓰기 가져오기 도구를 생성하면 출력 파일의 인코딩을 설정할 수 있습니다.

예를 들어 Windows 시스템에서 출력 파일 인코딩을 GBK로 설정하는 코드는 다음과 같습니다.

package main

import (
    "bufio"
    "os"
)

func main() {
    file, err := os.Create("output.txt")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    writer := bufio.NewWriter(file)

    writer.WriteString("Hello 世界!")
    writer.Flush()
}

위 코드에서는 먼저 os 패키지의 Create 메소드를 사용하여 출력 파일 output.txt를 생성합니다. 파일 핸들 닫기를 지연하려면 defer 문을 사용하세요.

위 코드를 실행하고 출력.txt 파일의 내용을 확인하세요.

123
Hello 世界!
  1. 웹 페이지 출력 인코딩 설정

golang에서는 net/http 패키지의 작성기 인터페이스를 사용하여 HTTP 응답을 출력하기 위한 ResponseWriter 클래스의 쓰기 메소드입니다.

웹 페이지의 출력 인코딩을 설정해야 하는 경우 먼저 HTTP 응답 헤더의 Content-Type 속성을 설정한 다음 Write 메서드를 사용하여 UTF-8로 인코딩된 텍스트를 출력해야 합니다.

예를 들어 Windows 시스템에서 웹 페이지 출력 인코딩을 GBK로 설정하는 코드는 다음과 같습니다.

package main

import (
    "io"
    "net/http"
)

func main() {
    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Content-Type", "text/html; charset=gbk")
        io.WriteString(w, "<html><head><meta charset='gbk'></head><body>Hello 世界!</body></html>")
    })
    http.ListenAndServe(":8080", nil)
}

위 코드에서는 먼저 net/http 패키지의 HandleFunc 메서드를 사용하여 HTTP 요청 처리를 등록합니다. 기능. 루트 경로에 접근할 때 HTTP 응답 헤더의 Content-Type 속성을 "text/html; charset=gbk"로 설정한 후 io 패키지의 WriteString 메서드를 사용하여 HTML 텍스트 "100db36a723c770d327fc0aef2ce13b1ef0c2772b76bfffb9337fc47aea795edb0cf166b29c794cd7527b4a311bef2e99c3bca370b5104690d9ef395f2c5f8d16c04bd5ca3fcae76e30b72ad730ca86dHello world! 36cc49f0c466276486e50c850b7e495673a6ac4ed44ffec12cee46588e518a5e",

마지막으로 http 패키지의 ListenAndServe 메서드를 사용하여 HTTP 서버를 시작하고 로컬 포트 ​​8080을 수신합니다.

위 코드를 실행하고 http://localhost:8080을 방문하면 Hello world!를 볼 수 있습니다. 텍스트는 웹 페이지에 표시되며 웹 페이지의 문자 집합은 GBK로 설정됩니다. charset 매개변수가 UTF-8로 변경되면 중국어 왜곡 문자가 나타납니다.

요약

golang 프로그램에서 한자가 깨져서 출력되는 문제를 방지하려면 출력 시 출력 인코딩을 올바르게 설정해야 합니다. 출력 장치가 다르면 다른 설정 방법을 사용해야 합니다. 터미널에서 출력하려면 os.Stdout의 Fprintln 메서드를 사용하고 형식 지정 매개변수를 설정하여 파일로 출력해야 하며, bufio 패키지의 버퍼링된 파일 기록기의 WriteString 메서드를 사용해야 합니다. 웹 페이지에서는 HTTP 응답 헤더의 Content-Type 속성을 설정하고 응답 작성자의 Write 메서드를 사용하여 HTML 텍스트를 출력해야 합니다.

위 내용은 golang이 중국어 왜곡 문자를 출력합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.