问题标签 [iconv]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 使用 Ruby 将 UTF8 转换为 ANSI
我有一个 Ruby 脚本,它在 Linux 机器中远程生成一个 UTF8 CSV 文件,然后通过 SFTP 将文件传输到 Windows 机器。
然后我需要用 Excel 打开这个文件,但是 Excel 没有 UTF8,所以我总是需要在能够将 UTF8 转换为 ANSI 的文本编辑器中打开文件。
我很想使用 Ruby 以编程方式执行此操作,并避免手动转换步骤。最简单的方法是什么?
PS:我尝试使用 iconv 但没有成功。
ruby - 使用 www::mechanize 时的 Iconv::IllegalSequence
我正在尝试做一些网络抓取,但 WWW:Mechanize gem 似乎不喜欢编码和崩溃。
发布请求导致 302 重定向(随后是机械化,到目前为止一切都很好),结果页面似乎崩溃了。我用谷歌搜索了很多,但到目前为止还没有出现如何解决这个问题。大家有什么想法吗?
代码:
错误:
macos - 如何解决 Mac Os x 上 iconv 的奇怪问题
我在Mac Os X 10.5 上(但我在 10.4 上重现了这个问题)
我正在尝试使用iconv将UTF-8 文件转换为 ASCII
utf-8 文件包含像“éàç”这样的字符
我希望将重音字符变成最接近的 ascii 等价物
所以
我的命令是这样的:
iconv -f UTF-8 -t ASCII//TRANSLIT//IGNORE myutf8file.txt
在 Linux 机器上运行良好
但在我本地的 Mac Os XI 上,例如:
è => 'e
à => `一个
我真的不明白为什么 iconv 在 mac os x 上返回这个奇怪的输出但在 linux 上一切都很好
有什么帮助吗?或方向?
提前致谢
iconv - 任何 PHP 或 Ruby 库可以将繁体中文转换为简体中文,反之亦然?
是否有任何 PHP 或 Ruby 库可以将繁体中文转换为简体中文或反之亦然(Big5 <--> GB)?iconv 库不会这样做,因为它只是转换编码,但字形保持不变。
encoding - Iconv 库的编码转换有什么好的替代方案吗?
我在 Ruby 上使用 Iconv 库将编码从 UTF-8 转换为 UTF-32、UTF-16 等,效果非常好。
但是,在从 Big5 转换为 UTF-8 时,我确实看到了一个问题——无效序列引发了异常......
当它从 CP950 转换为 UTF-8 时问题就消失了,其中 CP950 本质上是 Big5 ......
所以我想知道除了使用Iconv之外是否还有其他好的选择?还是CP950是Big5的更好版本?
mysql - iconv 给出带有智能引号的“非法字符”——如何摆脱它们?
我有一个 MySQL 表,其中 120,000 行以 UTF-8 格式存储。有一个字段,产品名称,其中包含带有许多重音符号的文本。在将第二个字段转换为对 url 友好的表单 (ASCII) 后,我需要用相同的名称填充第二个字段。
由于 PHP 不直接处理 UTF-8,我正在使用:
将名称转换为 ISO-8859-1,然后是一个庞大的 strstr 语句,将任何重音字符替换为其非重音等效字符(例如,à 变为 a)。
但是,原始文本名称是用智能引号输入的,并且 iconv 遇到一个就会窒息——我得到:
为了在使用 iconv 之前摆脱智能引号,我尝试使用三个语句,例如:
(’ 是 UTF-8 智能单引号的原始值)
因为文本文件太长,这些 str_replace 会导致脚本每次都超时。
在运行 iconv 之前,从 UTF-8 字符串中去除智能引号(或任何无效字符)的最快方法是什么?
或者,是否有更简单的解决方案来解决整个问题?将 UTF-8 中具有多种重音符号的名称转换为 ASCII 中没有重音符号且拼写正确的名称的最快方法是什么?
php - 如何从 PHP 字符串中的字符中删除重音符号?
作为使字符串在 URL 中可用的第一步,我试图从 PHP 字符串中的字符中删除重音符号。
我正在使用以下代码:
我期望的输出是这样的:
但是,重音字符不会被音译,而是用问号代替:
我可以在网上找到的所有内容都表明设置区域设置将解决此问题,但是我已经在这样做了。我已经检查了以下详细信息:
- 服务器支持我设置的语言环境(包含在由 生成的列表中
locale -a
) - 服务器的 iconv 版本支持源和目标编码(UTF-8 和 ASCII)(包含在由 生成的列表中
iconv -l
) - 输入字符串是 UTF-8 编码的(使用 PHP 的
mb_check_encoding
函数验证,如mercator 的回答中所建议的) - 调用
setlocale
成功(它返回'en_US.utf8'
而不是FALSE
)
问题的原因:
服务器使用了错误的 iconv 实现。它具有glibc版本而不是所需的libiconv版本。
请注意,某些系统上的 iconv 功能可能无法按预期工作。在这种情况下,最好安装 GNU libiconv 库。它很可能最终会得到更一致的结果。
– PHP手册对iconv的介绍
PHP 使用的 iconv 实现的详细信息包含在phpinfo
函数的输出中。
(我无法在我正在为此项目使用的服务器上使用正确的 iconv 库重新编译 PHP,所以我在下面接受的答案是在没有 iconv 支持的情况下删除重音最有用的答案。)
php - 我应该对多字节字符串使用 mb_* 或 iconv_* 函数吗?
就像我们现在一样,在 PHP 中处理多字节字符串并不是那么容易。例如,我想获取以下字符串的长度:ä
我应该使用哪些功能?mb_* 还是 iconv_*?为什么?考虑到编码可能不限于UTF-8。
提前谢谢!
macos - osx 更改文件编码(iconv)递归
我知道我可以使用以下方法在 OSX 下转换单个文件编码:
iconv -f ISO-8859-1 -t UTF-8 myfilename.xxx > myfilename-utf8.xxx
我必须转换一堆具有特定扩展名的文件,所以我想将文件夹 /mydisk/myfolder 中所有 *.ext 文件的文件编码从 ISO-8859-1 转换为 UTF-8
也许有人知道如何做到这一点的语法
谢谢
爱克
php - 使用 PHP 读取 XLS 文件时的字符编码问题
我正在使用PHP-Excel-Reader库来读取一些 XLS 文件并立即遇到了这个问题:
PHP 通知:
iconv()
[function.iconv]:在第 1718 行的 C:\web\docs\housing\excel_reader2.php 中的输入字符串中检测到不完整的多字节字符
有问题的行是这样的:
在此之前我添加了一些调试信息来帮助诊断问题:
我尝试将 更改为_defaultEncoding
任意数量的随机字符集,但显然没有帮助。
如果有人有任何线索,请帮忙!