使用 iconv 将 UTF8 转换为 UTF16

2024-03-15

当我使用 iconv 从 UTF16 转换为 UTF8 时,一切都很好,但反之亦然,它不起作用。 我有这些文件:

a-16.strings:    Little-endian UTF-16 Unicode c program text
a-8.strings:     UTF-8 Unicode c program text, with very long lines

文本在编辑器中看起来不错。当我运行这个时:

iconv -f UTF-8 -t UTF-16LE a-8.strings > b-16.strings

然后我得到这个结果:

b-16.strings:    data
a-16.strings:    Little-endian UTF-16 Unicode c program text
a-8.strings:     UTF-8 Unicode c program text, with very long lines

The file实用程序不显示预期的文件格式,并且文本在编辑器中看起来也不太好。是不是 iconv 没有创建正确的 BOM?我在 MAC 命令行上运行它。

为什么 b-16 不是正确的 UTF-16LE 格式?有没有其他方法将 utf8 转换为 utf16?

更多详细说明如下。

$ iconv -f UTF-8 -t UTF-16LE a-8.strings > b-16le-BAD-fromUTF8.strings
$ iconv -f UTF-8 -t UTF-16 a-8.strings > b-16be.strings 
$ iconv -f UTF-16 -t UTF-16LE b-16be.strings > b-16le-BAD-fromUTF16BE.strings

$ file *s
a-16.strings:                   Little-endian UTF-16 Unicode c program text, with very long lines
a-8.strings:                    UTF-8 Unicode c program text, with very long lines
b-16be.strings:                 Big-endian UTF-16 Unicode c program text, with very long lines
b-16le-BAD-fromUTF16BE.strings: data
b-16le-BAD-fromUTF8.strings:    data


$ od -c a-16.strings | head
0000000  377 376   /  \0   *  \0      \0  \f 001   E  \0   S  \0   K  \0

$ od -c a-8.strings | head 
0000000    /   *   *   *       Č  **   E   S   K   Y       (   J   V   O

$ od -c b-16be.strings | head
0000000  376 377  \0   /  \0   *  \0   *  \0   *  \0     001  \f  \0   E

$ od -c b-16le-BAD-fromUTF16BE.strings | head                                
0000000    /  \0   *  \0   *  \0   *  \0      \0  \f 001   E  \0   S  \0

$ od -c b-16le-BAD-fromUTF8.strings | head
0000000    /  \0   *  \0   *  \0   *  \0      \0  \f 001   E  \0   S  \0

很明显,每当我运行到 UTF-16LE 的转换时,BOM 就会丢失。 对此有什么帮助吗?


UTF-16LE tells iconv生成小尾数 UTF-16withoutBOM(字节顺序标记)。显然它假设既然你指定了LE,BOM 不是必需的。

UTF-16告诉它生成 UTF-16 文本(按照本地计算机的字节顺序)with a BOM.

如果你使用的是小端机器,我没有办法告诉你iconv生成带有 BOM 的大端 UTF-16,但我可能只是遗漏了一些东西。

我发现file命令无法识别没有 BOM 的 UTF-16 文本,您的编辑器也可能无法识别。但如果你跑iconv -f UTF-16LE -t UTF_8 b-16 strings,您应该获得原始文件的有效 UTF-8 版本。

尝试跑步od -c查看文件的实际内容。

UPDATE :

看起来您在一台大端机器上(x86 是小端),并且您正在尝试生成带有 BOM 的小端 UTF-16 文件。那是对的吗?据我所知,iconv不会直接这样做。但这应该有效:

( printf "\xff\xfe" ; iconv -f utf-8 -t utf-16le UTF-8-FILE ) > UTF-16-FILE

该人的行为printf might取决于您的区域设置;我有LANG=en_US.UTF-8.

(谁能提出一个更优雅的解决方案?)

另一个解决方法,if你知道产生的输出的字节顺序-t utf-16:

iconv -f utf-8 -t utf-16 UTF-8-FILE | dd conv=swab 2>/dev/null
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 iconv 将 UTF8 转换为 UTF16 的相关文章

  • Godaddy 托管上的 CakePHP 控制台

    我一直在努力让我的 CakePHP 网站在 Godaddy 网格托管 帐户上运行 我的蛋糕应用程序设置是从帐户的子目录托管的 并且可以通过子域访问 我必须调整我的 htaccess 文件才能使其正常工作 现在我需要让 CakePHP 控制台
  • raku 可以避免这个 Malformed UTF-8 错误吗?

    当我运行这个 raku 脚本时 my proc run tree du out proc out slurp close say 我在 MacOS 上遇到此错误 Malformed UTF 8 near bytes ef b9 5c 而不是
  • VS Code 即使关闭也使用 100% CPU

    即使未打开 VS Code 也会占用 100 的 CPU 使用率 我跑了ps aux grep PID命令查看详细信息但什么也看不懂 这是输出 tawhid 27099 100 0 0 1 447352160 11856 R 7 18PM
  • 如何修复“iptables:没有该名称的链/目标/匹配”?

    我在我的 Linux 嵌入式系统上构建并安装了 iptables 如果我列出所有规则 则一切正常 iptables list Chain INPUT policy ACCEPT target prot opt source destinat
  • 何时使用 pthread 条件变量?

    线程问题 看来 只有在其他线程调用 pthread cond notify 之前调用 pthread cond wait 时 条件变量才起作用 如果在等待之前发生通知 那么等待将被卡住 我的问题是 什么时候应该使用条件变量 调度程序可以抢占
  • 将 Armadillo C++ 库导入 Xcode

    我是 Mac 用户 正在尝试安装和导入 C Armadillo 库 以下是我到目前为止所采取的步骤 1 我从其网站下载了犰狳库 2 我仔细阅读了下载文件中的 Readme txt 文件 解释了如何安装它 3 我使用CMake将犰狳下载文件制
  • Unix 命令列出包含字符串但*不*包含另一个字符串的文件

    如何递归查看包含一个字符串且不包含另一个字符串的文件列表 另外 我的意思是评估文件的文本 而不是文件名 结论 根据评论 我最终使用了 find name html exec grep lR base maps xargs grep L ba
  • java setFullScreenWindow 在 Mac 中隐藏登录对话框

    我使用的是全屏窗口 类似于屏幕保护程序 使用这里的方法 GraphicsEnvironment getLocalGraphicsEnvironment getDefaultScreenDevice setFullScreenWindow t
  • awk 子串单个字符

    这是columns txt aaa bbb 3 ccc ddd 2 eee fff 1 3 3 g 3 hhh i jjj 3 kkk ll 3 mm nn oo 3 我可以找到第二列以 b 开头的行 awk if substr 2 1 1
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • 受信任的 1.5 小程序可以执行系统命令吗?

    如果是的话 这个能力有什么限制吗 具体来说 我需要以 Mac OSX 为目标 我以前用过这个在 Windows 系统上启动东西 但从未在 Mac 上尝试过 public void launchScript String args Strin
  • Linux 中的无缓冲 I/O

    我正在写入大量的数据 这些数据数周内都不会再次读取 由于我的程序运行 机器上的可用内存量 显示为 空闲 或 顶部 很快下降 我的内存量应用程序使用量不会增加 其他进程使用的内存量也不会增加 这让我相信内存正在被文件系统缓存消耗 因为我不打算
  • sys.maxunicode 是什么意思?

    CPython 根据编译选项在内部将 unicode 字符串存储为 utf 16 或 utf 32 在 utf 16 版本中 Python 字符串切片 迭代和len似乎适用于代码单元 而不是代码点 因此多字节字符的行为很奇怪 例如 在 CP
  • 抑制 makefile 中命令调用的回显?

    我为一个作业编写了一个程序 该程序应该将其输出打印到标准输出 分配规范需要创建一个 Makefile 当调用它时make run gt outputFile应该运行该程序并将输出写入一个文件 该文件的 SHA1 指纹与规范中给出的指纹相同
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • 如何禁用 GNOME 桌面屏幕锁定? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何阻止 GNOME 桌面在几分钟空闲时间后锁定屏幕 我已经尝试过官方手册了在红帽 https access redhat com doc
  • 如何根据 HTTP 请求使用 Python 和 Flask 执行 shell 命令并流输出?

    下列的这个帖子 https stackoverflow com questions 15092961 how to continuously display python output in a webpage 我能够tail f网页的日志
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while
  • 为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

    在英特尔 x86 上 Linux用途 https stackoverflow com a 52172985 149138事件l1d replacements来实施其L1 dcache load misses event 该事件定义如下 计数

随机推荐

  • Beaker 中数据库和 sql 后端的区别?

    看起来像Beaker http beaker groovie org 支持两种数据库后端 ext database 和 ext sqla 但是它们之间有什么区别呢 Overview 查看源代码 Beaker 1 6 4 py2 7 egg
  • 显示编码的电子邮件主题

    我正在使用发送邮件消息向我们的支持系统发送电子邮件 但是当它发送电子邮件时 它会显示主题行 如下屏幕所示 us ascii Q R899076 Aman 系统摘要 在主题中我使用变量 vUserName Get Item env usern
  • 使用 SparkSQL 删除 MySQL 表

    我知道我们可以通过以下命令从 SparkSQL 查询或创建 Mysql 表 val data sqlContext read jdbc urlstring tablename properties data write format com
  • 更改 UISwitch 应用程序的颜色

    我在用UISwitch在 iOS 3 中在我的应用程序中创建一个开关元素 它的默认颜色设置为蓝色 但我想将其颜色更改为棕色 我怎样才能为它选择不同的颜色UISwitchiOS 3 中的元素 我怎样才能为它选择不同的颜色UISwitch现代
  • 忽略 Oracle DUP_VAL_ON_INDEX 异常有多糟糕?

    我有一个表 用于记录用户是否至少查看过一个对象一次 因此 HasViewed ObjectID number FK to Object table UserId number FK to Users table 两个字段都不为 NULL 并
  • WCF客户端:第一次调用失败,第二次调用成功

    我有一个 REST Web 服务 它使用 WCF 客户端调用外部 SOAP Web 服务 此 REST Web 服务托管在我们测试环境中的 IIS 中 当调用 REST Web 服务 然后调用外部 Web 服务 使用 WCF 客户端 时 在
  • 当按钮位于 UITableViewCell 上时,为什么 UIButton shownTouchWhenHighlighted 不起作用?

    I put a UIButton on a UITableViewCell并设置其showsTouchWhenHighlighted财产给YES 单元格的选择风格是UITableViewCellSelectionStyleNone 我有一个
  • 使用重复列重塑数据

    我正在尝试使用重塑来重组我的数据集 这是我的数据的一个子集 它是一个 16 X 198 数据框 每个奇数列都是 16 年的列表 偶数列具有不同国家 地区的值 Algeria x Algeria y Argentina x Argentina
  • ggplot 中的等值线图,其中包含有孔的多边形

    我正在尝试绘制德国的分区统计图 显示各州的贫困率 灵感来自这个问题 https stackoverflow com questions 21651985 shapefile to produce a linked micromap in r
  • Spring:我希望为 Web 应用程序创建一个 junit 测试 - 需要 WebApplicationContext

    我正在编写一个 junit 测试 以便 令人惊讶地 独立测试我的应用程序的一部分 问题是我在单元测试中调用的构造函数中执行以下行 WebApplicationContext webApplicationContext ContextLoad
  • 如何在 SELECT 语句的 WHERE 子句中传递 php 变量?

    我有一个 php 变量 我想在我的数据库中使用此变量获取数据库中的另一个字段where clause My code require conn php module POST postmodule query SELECT width FR
  • 使用 scipy 计算两个正态分布的重叠概率

    我有两条 scipy stats norm mean std pdf 0 正态分布曲线 我试图找出两条曲线的差异 重叠 我如何在Python中使用scipy计算它 谢谢 开始Python 3 8 标准库提供了NormalDist https
  • 如何在鼠标悬停在栏上时显示标签

    我用 Chartist js 制作了一个条形图 现在我想在栏上添加一些监听事件 如何让鼠标悬停在栏上时显示标签 您有 2 个选择 Option 1 您可以使用一个工具提示插件 你可以在这里找到它 https github com Globe
  • Jquery 验证:根据下拉选择动态添加/删除规则

    我有一个下拉选择器 其值从 1 到 4 根据选择 表单中的后续输入将被隐藏 并且每个输入所需的验证都会被删除 例如 如果选择 2 则显示输入 1 2 并添加所需的验证 同时隐藏 3 4 并删除验证 dropdownSelector chan
  • 将多个 jar 合并为一个(使用 Maven)

    我在 javafx 中有一个项目 我有 3 个依赖项 我尝试使用 maven 将它们与我的主体 jar 结合起来 结果我得到了一个罐子 1 82mb 但是当我点击他时 他没有启动提示出现 pom xml
  • 连接Redis集群失败

    我已经设置了 Redis 集群谷歌计算引擎 http console developers google com by 点击部署 https cloud google com solutions redis click to deploy
  • 获取 WhatsApp 消息

    是否可以创建一个监听器来获取消息whatsApp在安卓中 我的意思是就像你有一个broadcastReceiver在android中收听传入的短信 这件事是否需要任何 API 或者这是合法的事情 还是我需要获得任何许可whatsApp Wh
  • 如何在没有源代码的情况下在类中放置断点?

    我有一个 Web 应用程序 我需要找到访问 http 请求对象的所有类 因为其中一个类导致了难以发现的错误 因此我想在ServletRequest实现的一些方法中放置断点 然而 这个实现是由 Weblogic 提供的 我没有其来源 如何在没
  • GeoChart:标记加载速度非常慢

    google charts load current packages geochart google charts setOnLoadCallback drawRegionsMap function drawRegionsMap var
  • 使用 iconv 将 UTF8 转换为 UTF16

    当我使用 iconv 从 UTF16 转换为 UTF8 时 一切都很好 但反之亦然 它不起作用 我有这些文件 a 16 strings Little endian UTF 16 Unicode c program text a 8 stri