创建文件时如何指定编码?
How to specify encoding while creating file?
我正在使用 R 脚本创建和追加文件。但我需要将文件保存为 ANSI 编码,即使某些字符是 Unicode 格式。如何保证ANSI编码?
newfile='\home\user\abc.ttl'
file.create(newfile)
text3 <- readLines('\home\user\init.ttl')
sprintf('readlines %d',length(text3))
for(k in 1:length(text3))
{
cat(text3[[k]],file=newfile,sep="\n",append=TRUE)
}
编码可能很棘手,因为您需要在输入时检测编码,然后需要在写入前进行转换。这里听起来您的输入文件 input.ttl
被编码为 UTF-8,您需要将其转换为 ASCII。这意味着您可能会丢失一些不可翻译的字符,因为可能没有从 UTF-8 字符到 128 位较低范围之外的 ASCII 的映射。 (在此范围内UTF-8到ASCII的映射是一样的。)
下面是如何做到这一点。由于您没有提供可重现示例所需的元素,因此您必须相应地修改代码才能进行测试。
确保您的输入文件实际上是 UTF-8,并且您正在以 UTF-8 格式读取它。您可以通过将 encoding = "UTF-8"
添加到代码的第三行,作为 readLines()
的参数来实现。请注意,您可能无法在 Windows 平台上将系统区域设置为 UTF-8,但文件仍将被读取为 UTF-8,即使扩展字符可能无法正确显示。
使用iconv()
将文本从 UTF-8 转换为 ASCII。 iconv()
是矢量化的,因此它适用于整组文本。您可以使用
text3 <- iconv(text3, "UTF-8", "ASCII", sub = "")
请注意,sub = ""
参数会阻止在遇到任何不可翻译的字符时将整个字符元素转换为 NA
的默认行为。 (包括"smart quotes"等看似无辜实则邪恶的东西。)
现在,当您使用 cat()
写入文件时,输出应该是 ASCII。
我正在使用 R 脚本创建和追加文件。但我需要将文件保存为 ANSI 编码,即使某些字符是 Unicode 格式。如何保证ANSI编码?
newfile='\home\user\abc.ttl'
file.create(newfile)
text3 <- readLines('\home\user\init.ttl')
sprintf('readlines %d',length(text3))
for(k in 1:length(text3))
{
cat(text3[[k]],file=newfile,sep="\n",append=TRUE)
}
编码可能很棘手,因为您需要在输入时检测编码,然后需要在写入前进行转换。这里听起来您的输入文件 input.ttl
被编码为 UTF-8,您需要将其转换为 ASCII。这意味着您可能会丢失一些不可翻译的字符,因为可能没有从 UTF-8 字符到 128 位较低范围之外的 ASCII 的映射。 (在此范围内UTF-8到ASCII的映射是一样的。)
下面是如何做到这一点。由于您没有提供可重现示例所需的元素,因此您必须相应地修改代码才能进行测试。
确保您的输入文件实际上是 UTF-8,并且您正在以 UTF-8 格式读取它。您可以通过将
encoding = "UTF-8"
添加到代码的第三行,作为readLines()
的参数来实现。请注意,您可能无法在 Windows 平台上将系统区域设置为 UTF-8,但文件仍将被读取为 UTF-8,即使扩展字符可能无法正确显示。使用
iconv()
将文本从 UTF-8 转换为 ASCII。iconv()
是矢量化的,因此它适用于整组文本。您可以使用text3 <- iconv(text3, "UTF-8", "ASCII", sub = "")
请注意,
sub = ""
参数会阻止在遇到任何不可翻译的字符时将整个字符元素转换为NA
的默认行为。 (包括"smart quotes"等看似无辜实则邪恶的东西。)现在,当您使用
cat()
写入文件时,输出应该是 ASCII。