- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在 C 中使用 iconv.h
将编码从 ISO-8859-*
转换为 UTF-8
。我需要传入的流显示在浏览器中。但是转换后的结果没有在 chrome 中显示。在其他浏览器中,它工作正常。下面给出了一个字符串示例
char *str = "\x05\x86\x53";
char dest_str[100];
char *out = dest_str;
size_t inbytes = strlen(str);
size_t outbytes = sizeof dest_str;
printf("Before Conversion: %2x %2x %2x\n",str[0],str[1],str[2]);
iconv_t conv = iconv_open("UTF-8//TRANSLIT", "ISO-8859-9");
if (conv == (iconv_t)-1) {
perror("iconv_open");
return 1;
}
if (iconv(conv, &str, &inbytes, &out, &outbytes) == (size_t)-1) {
perror("iconv");
return 1;
}
dest_str[sizeof dest_str - outbytes] = 0;
printf("After Conversion: %2x %2x %2x\n",dest_str[0],dest_str[1],dest_str[2]);
puts(dest_str);
输出:转换前:5 ffffff86 53
转换后:5 ffffffc2 ffffff86
转换是否正确进行?如何解决chrome无法显示字符的问题?
最佳答案
据我所知,转换是正确的。唯一的问题是 UTF-8 字符串有四个字节,但您只打印前三个字节。
显然,05 是一个非打印字符。它的意思在浏览器上下文中没有意义。 (你为什么要发送它?)可能是 Chrome 拒绝打印任何带有控制代码的内容。
0x86 到 0xC2 0x86 的转换是正确的。但是,您使用的字体可能没有字形。在我的 Mac 上,情况似乎是这样。
编辑
checkout ISO-8859-9事实证明,您正在翻译的序列包含一个 ASCII 控制代码(0x05)、一个未定义字符(0x86)和一个 ASCII 可打印字符(0x53 或 S)。转换为 UTF-8 后,ASCII 字符(可打印或不可打印)保持不变,但将非 ASCII 字符正确转换为 UTF-8 两字节序列。三分之二的字符在呈现为文本时没有意义,Chrome 显然拒绝这样做。
关于html - iconv 转换为 UTF-8 导致不可显示的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42695036/
我正在尝试在 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 命令(我宁愿避免,尽管我已经在应用程序中使用它进
我是一名优秀的程序员,十分优秀!