我有一个Go程序,可以读取类似以下代码的文本文件:
package main
import (
"bufio"
"log"
"os"
)
func main() {
file, err := os.Open("test.txt")
if err != nil {
log.Fatalf("failed opening file: %s", err)
}
scanner := bufio.NewScanner(file)
scanner.Split(bufio.ScanLines)
var txtlines []string
for scanner.Scan() {
txtlines = append(txtlines, scanner.Text())
}
file.Close()
}
游乐场:https://play.golang.org/p/cnDOEFaT0lr
该代码适用于所有文本文件,除了用UCS-2小端编码的文件。如何将文件转换为UFT8格式以读取它?
我有一个Go程序来读取文本文件。如何将[UCS-2 little endian]文件转换为UFT-8格式来读取?
统一码
常见问题解答:UTF-8、UTF-16、UTF-32
问:UCS-2和UTF-16有什么区别?
答:UCS-2是一个过时的术语,它指的是在替代代码点和UTF-16被添加到标准版本2.0之前,Unicode 1.1之前的Unicode实现。现在应该避免使用这个术语。
UCS-2没有描述不同于UTF-16的数据格式,因为两者都使用完全相同的16位代码单元表示。但是,UCS-2不解释代理代码点,因此不能用于一致地表示补充字符。
在过去,有时一个实现被标记为“UCS-2”,以表明它不支持补充字符,也不将代理代码点对解释为字符。这种实现不会处理字符属性、代码点边界、排序规则等的处理。补充字符。
UCS-2是UTF-16的适当子集。
例如
package main
import (
"bufio"
"fmt"
"os"
"golang.org/x/text/encoding/unicode"
)
func main() {
// "Language Learning and Teaching" written in 16 or more languages: UCS-2
// http://www.humancomp.org/unichtm/unilang.htm
f, err := os.Open("unilang.htm")
if err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
defer f.Close()
dec := unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM).NewDecoder()
scn := bufio.NewScanner(dec.Reader(f))
for scn.Scan() {
fmt.Println(scn.Text())
}
if err := scn.Err(); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(1)
}
}
游乐场:https://play.golang.org/p/3VombFxUNb1
我试图写. txt文件,它必须是UCS-2小端,但当我尝试 据我所知,它应该是相同的,但它不会在服务器上的特定应用程序中工作。当我在记事本中打开工作(手动创建)的文件时,它说它是“UCS-2 Little Endian”,但当它在Java中像这样创建时,它说“UCS-2 LE w/o BO”,服务器无法读取它。 我怎么能写出来呢?这是整个代码: 感谢您的任何建议。
问题内容: 我正在尝试编写.txt文件,它必须是UCS-2 Little Endian,但是当我尝试 根据我的阅读,它应该是相同的,但在服务器上的特定应用程序中将无法使用。当我在Notepad ++中打开可以正常工作(手动创建)的文件时,它说它是“ UCS-2 Little Endian”,但是用Java这样创建时,它说“ UCS-2 LE w / o BO”,服务器无法读取它。 我该怎么写才能使
在Node运行以下命令的Windows平台上
正常的ASCII是正确的,但韩语字符不是。 所以我做了一个简单的程序来读取一个UTF-8文本文件并打印内容。 输出表示,字符在字符串、文字和文件中的编码是不同的。
问题内容: 我如何阅读像android app中的文本文件: 所以我可以返回一个字符串,如: 我想到的是(伪代码): 问题答案: 试试这个
问题内容: 我在使用BufferedReader时遇到问题 我想打印一个文本文件的6行: 现在,从每次调用readLine()方法可以收集到的信息开始,它都会自动前进到下一行。 所以我不能使用条件br.readLine()!= null,因为它已经将其前进了一行,并且我得到了输出: 我使用什么条件来检查文本字段中是否还有新行。 提前致谢! 问题答案: 这就是问题: 您有两次调用-第一个 仅 检查是