Ruby:如何将文件保存为 UTF-16 Little Endian

2024-06-30

我想用UTF-16 Little Endian将®保存到txt文件中,我通过一些方式进行了测试

1.下面的编码是UTF-8

$RegisterMark=[174].pack('U*')
file = File.new("C:/Output.txt","w")
file.puts $RegisterMark
file.close

2.下面的编码是UTF-16 Big Endian

require 'iconv'

$RegisterMark=[174].pack('U*')
$utf16RegisterMark =Iconv.conv('UTF-16', 'UTF-8', $RegisterMark )
file = File.new("C:/Output.txt","w")
file.puts $utf16RegisterMark 
file.close

Iconv.iconv 方法不支持 UTF-16 LE 类型。

如何使用 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

这里重要的一点是使用显式指定文件的编码:encoding键入options Hash of the File.new方法(或者在这种情况下,File.open)。这样,写入文件的字符串将被自动转换,无论它们采用什么编码。

我还冒昧地将您的代码更改为更惯用的 Ruby 风格:

  • Ruby 社区使用snake_case, not CamelCase用于变量和方法名称。
  • 应避免全局变量,特别是因为在您的示例中,它们无论如何都是完全多余的。
  • 实在没必要​​用Array#pack在这里,写下你想要的内容。
  • 只要有可能,请使用块形式File.open,即使出现错误或异常,它也会为您关闭文件。
  • 处理文本文件时,您应该始终传递t修饰符。它在大多数操作系统上没有任何区别(不幸的是,这就是为什么大多数 Rubyists 忘记传递它),但它是crucial在 Windows 上,这就是您似乎正在使用的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby:如何将文件保存为 UTF-16 Little Endian 的相关文章

  • EventMachine 的优势是什么

    这是我的测试用例 我发现EM并不比一般的TCP服务器快 EM 服务器 require rubygems require benchmark require eventmachine class Handler lt EventMachine
  • 如何从 Sinatra 中删除路线?

    我有一些动态加载的插件 它们在启动时注册它们的路由 但是我还需要能够在禁用它们时删除它们的路由 有没有办法删除现有的路线 API 没有任何我能找到的方法来删除它们 我能想到的唯一其他方法就是直接访问 Sinatra Base 中的 rout
  • python:pythonbrew 和 virtualenv 有什么区别?

    我是python新手 打算学习django 我对 ruby 不是 Rails 有一些经验 并且熟悉RVM http beginrescueend com 但是我不明白之间的区别蟒蛇酿造 https github com utahta pyt
  • Rails 资产管道不包括 application.js 清单中所需的文件

    Rails 资产管道不包含 application js 中所需的文件 呈现给浏览器的唯一 javascript 文件是 application js 并且 require 行未编译为包含应有的标签 This is a manifest f
  • Capybara::ElementNotFound:无法找到 xpath“/html”

    我正在关注 Ruby on Rails 教程 http ruby railstutorial org chapters static pages http ruby railstutorial org chapters static pag
  • 减少哈希值

    我在使用reduce 语法时遇到了问题 我有以下格式的哈希 H Key1 gt 1 Key2 gt 2 我想使用reduce 来查找该函数中值的总和 就像是 H reduce 0 memo elem memo elem 我知道这是错误的 我
  • Rails:构建涉及多态关联和 STI 的查询

    我正在尝试查找有关照片的 10 条最新评论 以便将它们集成到我的 Rails 3 0 3 应用程序上的活动提要中 我有一个Photo模型 它继承自Upload使用单表继承的模型 class Upload lt ActiveRecord Ba
  • Perl 和 MySql 中的 utf8 编码

    我的数据库 MySql 有 utf8 general 排序规则 我正在从数据库访问数据并显示一个网页 用 Perl 开发 它显示瑞典语字符 和不同的字符 我检查了Mysql数据库 在那里我可以看到其中包含 字符的数据 看来 访问数据时存在编
  • 如何将 270921 秒转换为天 + 小时 + 分钟 + 秒? (红宝石)

    我还有几秒钟的时间 假设 270921 我如何显示该数字 表示它是 xx 天 yy 小时 zz 分钟 ww 秒 使用它可以非常简洁地完成divmod t 270921 mm ss t divmod 60 gt 4515 21 hh mm m
  • Amazon SQS 优先级队列

    是否可以使用 Amazon 简单队列服务创建优先级队列 最初我找不到有关该主题的任何内容 这就是我创建两个队列的原因 一个普通队列和一个优先队列 我根据我定义的规则将消息排队到该队列 但在使消息出队时会出现混乱 如何对队列进行长轮询 以便我
  • 如何用C++读取UTF-8文件数据?

    我有一个清单IPA https en wikipedia org wiki International Phonetic Alphabet名为 ipa txt 的文本文件中的 UTF 8 符号并为其分配了数字 如何将它与源文件交叉引用 该源
  • Ruby 中有内置的惰性哈希吗?

    我需要用各种值填充哈希 有些值被经常访问 而另一些值则很少被访问 问题是 我使用一些计算来获取值 并且使用多个键填充哈希变得非常慢 在我的情况下 使用某种缓存不是一个选择 我想知道如何使哈希仅在第一次访问密钥时计算值 而不是在添加密钥时计算
  • 如何在 ruby​​ 中编写二进制文字?

    大多数语言 包括 Ruby 允许以至少三种基数编写数字文字 十进制 八进制和十六进制 十进制的数字是常见的 并且被写成 大多数 人自然地写数字 96 写成96 以零为前缀的数字通常被解释为基于八进制 96 将写为0140 基于十六进制的数字
  • 使用 git 签入对 UTF8 BOM 的更改

    我不小心从 Windows 签入了一个 utf8 编码的文本文件 之前没有删除 BOM 现在我尝试在更高版本中删除它并再次签入此更改 git 似乎忽略了 BOM 字节的更改 是否有一个设置可以让 git 让我按原样签入文件 我知道在行结尾方
  • 填充表格数据的打印输出

    我知道这可能非常简单 但我在一个文件中有一些数据 例如 Artichoke Green Globe Imperial Star Violetto 24 deep Beans Lima Bush Baby Bush Lima Fordhook
  • 如何创建用于 Apple Music 的 JWT

    我正在尝试创建一个开发者令牌 即 ES256 JWT 用于 Apple Music 身份验证 Here https developer apple com library content documentation NetworkingIn
  • 在 ruby​​ 中一次读取文件 N 行

    我有一个大文件 数百兆 其中包含文件名 每行一个 我需要循环遍历文件名列表 并为每个文件名分叉一个进程 我一次最多需要 8 个分叉进程 并且不想一次将整个文件名列表读入 RAM 我什至不知道从哪里开始 有人可以帮助我吗 File forea
  • mac 上 gem install pg -v 0.12.2 错误

    我是编程世界的新手 我花了一些时间解决 ruby on Rails 的捆绑错误 我正在运行 OSX 10 9 1 用于 Ruby 管理的 RVM 并且我正在使用 ruby 2 1 1 我收到的错误是 Gem Ext BuildError 错
  • 由模块中定义的另一个方法覆盖方法

    我想定义一个实例方法Date next第二天返回 所以我做了一个DateExtension模块 像这样 module DateExtension def next symb day dt DateTime now day gt Date n
  • 如何在 Mac 上为 Ruby 添加根 CA 证书

    我正在尝试寻找一些简单问题的答案 Ruby 在执行 SSL 时使用什么证书 我认为这适用于gem以及 如何将根证书添加到受信任的 CA 证书集中 有这方面的最佳实践吗 它记录在哪里 背景 我正在使用 mac 当前为 Sierra 并使用 r

随机推荐