Ruby:如何将文件保存到UTF-16 Little-Endian
我想用UTF-16 Little-Endian将®保存到一个txt文件中,我在某些方面进行了测试 1.下面的编码是UTF-8 2.下面的编码是UTF-16大端码 mentod Iconv.conv不支持UTF-16 LE类型Ruby:如何将文件保存到UTF-16 Little-Endian,ruby,unicode,utf-8,utf-16,utf-16le,Ruby,Unicode,Utf 8,Utf 16,Utf 16le,我想用UTF-16 Little-Endian将®保存到一个txt文件中,我在某些方面进行了测试 1.下面的编码是UTF-8 2.下面的编码是UTF-16大端码 mentod Iconv.conv不支持UTF-16 LE类型 如何使用UTF16 LE保存output.txt?最简单的方法是首先以UTF-16LE的形式打开文件: register_mark = "\00ua3" # or even just: register_mark = ® File.open('C:/Output.txt'
如何使用UTF16 LE保存output.txt?最简单的方法是首先以UTF-16LE的形式打开文件:
register_mark = "\00ua3" # or even just: register_mark = ®
File.open('C:/Output.txt', 'wt', encoding: 'UTF-16LE') do |f|
f.puts register_mark
end
这里重要的一点是使用file.new
方法(或在本例中,file.open
)的选项中的:encoding
键显式指定文件的编码。这样,写入文件的字符串将自动转换,无论它们采用何种编码
我还冒昧地将您的代码更改为更地道的Ruby风格:
- Ruby社区使用
snake\u case
,而不是CamelCase
作为变量和方法名
- 应该避免使用全局变量,尤其是因为在您的示例中,它们完全是多余的
- 这里真的不需要使用
Array#pack
,只需写下你想要的
- 尽可能使用
File.open
的块形式,它将为您关闭文件,即使在出现错误或异常的情况下也是如此
- 处理文本文件时,应始终传递
t
修饰符。它在大多数操作系统上没有任何区别(这就是为什么,不幸的是,大多数Rubyists忘记通过它的原因),但在Windows上它是至关重要的,这就是您似乎正在使用的
有点老套,但这对我来说很管用。具体来说,我试图让ruby输出UTF-16LE w/BOM
## Adds BOM, albeit in a somewhat hacky way.
new_html_file = File.open(foo.txt, "w:UTF-8")
new_html_file << "\xFF\xFE".force_encoding('utf-16le') + some_text.force_encoding('utf-8').encode('utf-16le')
##添加BOM,尽管有点老套。
new_html_file=file.open(foo.txt,“w:UTF-8”)
新的html文件您确定它不支持UTF-16LE
?有很多特色的ruby/iconv转换到UTF-16LE和从UTF-16LE到UTF-16LE的转换。。。
register_mark = "\00ua3" # or even just: register_mark = ®
File.open('C:/Output.txt', 'wt', encoding: 'UTF-16LE') do |f|
f.puts register_mark
end
## Adds BOM, albeit in a somewhat hacky way.
new_html_file = File.open(foo.txt, "w:UTF-8")
new_html_file << "\xFF\xFE".force_encoding('utf-16le') + some_text.force_encoding('utf-8').encode('utf-16le')