我正在嘗試處理特定檔案中存在的字串,該檔案是用英語撰寫的。當檔案的編碼不同于“UTF-8”時,就會出現問題。但是編碼為“UTF-16-le”的檔案的行為不如預期。我的主要目標是操作讀取檔案中的字串。例如,strings.TrimSpace()僅適用于UTF-8檔案,
我知道 golang 默認只支持 UTF-8,任何替代方法都會有所幫助。
個人問題
另外我想指出,許多新的編程語言都會處理字串而不考慮編碼,為什么 Go 只支持 UTF-8。如果至少有另一種將編碼格式傳遞給閱讀器的方法,那可能仍然有幫助。
我試過的
- 我嘗試使用 utf-8 和 utf-16 標準包
代碼
(main.go)
示例代碼以顯示差異。
package main
import (
"fmt"
"io/ioutil"
"net/http"
"strings"
)
func processFile(src string) {
data, _ := ioutil.ReadFile(src)
fmt.Println("--- original source ---")
fmt.Println(string(data))
fmt.Println(http.DetectContentType(data))
fmt.Println("\n--- modified source ---")
for _, val := range strings.Split(string(data), "\n") {
fmt.Println(strings.TrimSpace(val))
}
}
func main() {
processFile("./utf-16-english.txt")
processFile("./utf-8-english.txt")
}
檔案-1
(utf-8-english.txt)
Hello
This is
Sample
Document
檔案-2
(utf-16-english.txt)
Hello
This is
Sample
Document
輸出

編輯
似乎以更好的方式處理字串的唯一方法是將它們轉換為 UTF-8。請參考標記的答案。
uj5u.com熱心網友回復:
您必須解碼 utf-16 編碼檔案:
import "unicode/utf16"
...
strValue:=string(utf16.Decode(data))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/419544.html
標籤:
