- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我目前正在尝试通过将 UTF-8 字符串中的所有特殊字符和重音符转换为等效的 ASCII 字符来删除它们。
所以我只是使用这段代码:
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
问题是,例如单词“début”变成了“dbut”而不是“debut”。为了让它工作,我需要添加对 setlocale 的调用,如下所示:
setlocale(LC_ALL, 'en_US.UTF8');
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
我不明白为什么。我认为 UTF-8 和 ASCII 总是相同的,无论您使用什么语言环境。
编辑:我不是说 UTF-8 等于 ASCII,我的意思是 UTF-8 总是等于 UTF-8 而 ASCII 总是等于 ASCII
最佳答案
与 ASCII 重叠的 UTF-8 子集(代码点 0-127)确实与 ASCII 相同。但是,带重音的拉丁字符不是 ASCII 字符集的一部分,如果您自己没有 setlocale
,系统的默认区域设置(显然不包含这些带重音的字符)将用于获取字符集一起工作。
一般来说,iconv
可能有点不确定; introduction 中提到了这一点扩展名:
This module contains an interface to iconv character set conversion facility. With this module, you can turn a string represented by a local character set into the one represented by another character set, which may be the Unicode character set. Supported character sets depend on the iconv implementation of your system. Note that the iconv function on some systems may not work as you expect. In such case, it'd be a good idea to install the GNU libiconv library. It will most likely end up with more consistent results.
关于php - 为什么PHP的iconv需要setlocale?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7931853/
我正在尝试在 MAMP 上配置 PHP 5.5,遵循这篇文章: Having problems while try to install OAUTH with PECL in MAMP on mac
我试图在this tutorial的帮助下使用Cygwin安装SRILM,但出现此错误: make[2]: Leaving directory '/srilm/zlib/src' make[1]: L
我在处理 Windows 机器上生成的表格数据的文本文件时遇到问题。我在 Ruby 1.8 工作。在处理文件中的第二行时,以下给出错误(“\000”(Iconv::InvalidCharacter))
iconv 与//TRANSLIT 一起使用时,可以将 ö (odieresis) 等特殊字符转换为 o 等 ascii 字符。某处是否有一个字符表列出了这些转换是如何工作的?我已经在 source
我有一个在Unix下描述为的文件: $file xxx.csv xxx.csv: UTF-8 Unicode text, with very long lines 用less/vi查看它会导致某些特殊
这个问题在这里已经有了答案: Simple UTF8->UTF16 string conversion with iconv (2 个答案) 关闭 8 年前。 在我的 C++ 代码中,我需要使用 i
我下载了iconv昨天,并使用以下方法安装它: $ ./configure --prefix=/usr/local $ make $ make install 当我尝试从 shell 运行 iconv
在 Linux 中我创建了一个纯文本文件。使用“file -i”我看到文件编码是“us-ascii”。尝试以下命令后,它仍然显示输出文件编码为“us-ascii”。您能告诉我如何更改编码吗?或者有什么
当我使用 ASP Classic 脚本生成 XML 文件并在 PHP 页面中导入 XML 文件时,导入过程工作正常。 但是,当我通过 PHP 脚本(而不是 ASP Classic)生成相同的 XML
当您有一个不同于 UTF-8 的字符集,并且需要将其转换为 JSON 格式以将其迁移到数据库时,可以在 PHP 中使用两种方法,调用 utf8_encode() 和 iconv()。我想知道哪个性能更
我目前正在使用 iconv 来转换具有不同编码的文档。 iconv() 函数的原型(prototype)如下: size_t iconv ( iconv_t cd, const char* *
我尝试制作使用 iconv 将 s-jis 字符串转换为 utf-8 字符串的方法。我在下面写了一段代码, #include #include #include using namespace
我没有发现任何违法行为 - 对可能存在的问题有何建议? if (strtolower($matches[1]) != 'utf-8') { var_dump($matches[
在php中iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库;但有时候iconv对于部分数据转码会无缘无故的少一些。比如在转换字符"—"到gb2312
1、下载libiconv函数库http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.9.2.tar.gz; 2、解压缩tar -zxvf libi
考虑以下示例文本行: α Arietis, called Hamal, is the brightest star in Aries. Its traditional name is derived
我正在尝试将输入文件的一些字符串从 UTF8 转换为 ASCII。对于我给它的大多数字符串,使用 iconv() 转换效果非常好。但是在其中一些上,它返回 NA。虽然手动修复文件中的问题似乎是最简单的
在 U2/Universe/Pick 中,有一个函数 ICONV("11/11/15","D") 将外部日期转换为内部日期,但这适用于美国或日期格式为 mm/仅日/年。如何将此函数用于英国日期格式 (
是否所有流行的iconv实现都支持从UTF-16BE转换(即具有大端字节顺序的UTF-16)? GNU iconv支持这种编码,但是其他常用的实现又如何呢?具体来说,mingw和* BSD支持什么?
我需要在不占用服务器内存的情况下转换文本文件的字符编码,而输入文件是用户配置的并且其大小不受限制。 使用 exec() 包装 unix 的 iconv 命令(我宁愿避免,尽管我已经在应用程序中使用它进
我是一名优秀的程序员,十分优秀!