簡體   English   中英

在go中讀取US-ASCII文件

[英]Read US-ASCII File in go

目前,我嘗試將us-ascii文件讀取到golang中,但每次這樣做時,每個特殊符號(例如ÄÖÜß)都會被替換為? 或在我的數據庫中帶有特殊符號?。

有什么我可以防止的嗎?

這是我讀取文件的方式:

file, err := os.Open(path)
if err != nil {
    return err
}
var lines []string
r := bufio.NewReader(file)
for {
    line, err := r.ReadBytes('\n')
    if err != nil {
        break
    }
    lines = append(lines, string(line))
}
fmt.Println(strings.Join(lines, ""))
index.Content = strings.Join(lines, "")

由於字母ÄÖÜß在US-ASCII中不存在,因此我有根據地猜測,您實際上正在處理Latin-1(ISO-8859-1)編碼。

從Latin-1轉換可以這樣完成:

runes := make([]rune, len(line))
for i, b := range line {
    runes[i] = rune(b)
}
lines = append(lines, string(runes))

編輯:

該示例未進行優化,但顯示了如何將Latin-1字節存儲在rune因為Latin-1的值直接對應於Unicode代碼點。 當將[]rune轉換為string時,便完成了到UTF-8的實際編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM