[英]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.