阅读所有关于后iconv和Encoding,我仍然感到困惑.
我正在抓取网页的来源我有一个如下所示的字符串:( 'pretty\u003D\u003Ebig'在R控制台中显示'pretty\\\u003D\\\u003Ebig').我想将其转换为ASCII字符串,应该是'pretty=>big'.
更简单,如果我设置
x <- 'pretty\\u003D\\u003Ebig'
Run Code Online (Sandbox Code Playgroud)
如何进行转换x以获得收益pretty=>big?
有什么建议?
我应该使用哪个多字节处理库:iconv或mbstring?
经过一些谷歌搜索我没有找到足够的论据来说服我特别使用一个,我无法得到任何基准(我太懒了创建一个:-p).
毕竟这个选择真的不重要吗?
感谢您的任何建议.
我正在尝试使用iconv将UTF-16BE编码文件(字节顺序标记:0xFE 0xFF)转换为UTF-8,如下所示:
iconv -f UTF-16BE -t UTF-8 myfile.txt
Run Code Online (Sandbox Code Playgroud)
但是,结果输出具有UTF-8字节顺序标记(0xEF 0xBB 0xBF),这不是我需要的.有没有办法告诉iconv(或者是否存在等效的编码)不将BOM放入UTF-8结果中?
我想知道如何使用Javascript将UTF-8中的字符"转换"为最接近的ASCII等价物,就像PHP中的Iconv doest一样.
例:
ü变成你
成为o
我宁愿不使用替换,因为a)它需要一组完整的字符,这是很多工作而且b)我很难得到一套完整的字符,而且我永远不会确定如果我错过了一两个.
我正在尝试使用Laravel和DomPDF将文档导出为PDF.这适用于我的Mac,但不适用于登台或实时服务器.错误如下:
我不知道这意味着什么,也找不到任何解决方案.
iconv_strlen(): Wrong charset, conversion from8位// IGNORE'到 UCS-4LE' is not allowed
open: /srv/www/html/vendor/patchwork/utf8/class/Patchwork/PHP/Shim/Mbstring.php
return true;
}
static function mb_strlen($s, $encoding = INF)
{
INF === $encoding && $encoding = self::$internal_encoding;
return iconv_strlen($s, $encoding . '//IGNORE');
}
Run Code Online (Sandbox Code Playgroud)
我尝试将以下内容添加到.htaccess中
AddDefaultCharset UTF-8
Run Code Online (Sandbox Code Playgroud)
我尝试将以下内容添加到视图的顶部,我正在尝试生成pdf:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
Run Code Online (Sandbox Code Playgroud)
如果您需要任何进一步的信息来帮助我进行调试,请在评论中提问.
我正在开发的代码在Windows XP和Mac OS X上完美运行.在CentOS(以及Fedora和Ubuntu)上进行测试时,它运行不正常.搜索网络让我得出结论,这是导致问题的glibc版本iconv.所以现在我需要Zend Lucene 的libiconv版本iconv才能正常工作.
我已经下载libiconv的,并配置它--prefix=/usr/local,make,然后make install没有任何错误.它似乎已成功安装,因为执行/usr/local/bin/iconv --version说版本是libiconv.虽然简单iconv --version仍然给出了glibc版本.
然后我从源代码重新编译PHP --with-iconv=/usr/local.但是,phpinfo()显示iconv正在使用的是glibc版本.我也已经尝试过使用--with-iconv-dir或使用其他几个编译器/usr/local/bin/php.
当然,我重新编译PHP后重新启动了Web服务器.
我的内容如下/etc/httpd/conf/httpd.conf:
LoadModule /usr/lib/httpd/modules/libphp5.so
Run Code Online (Sandbox Code Playgroud)
而libphp5.so实际上是/usr/lib/httpd/modules.
phpinfo()显示PHP 5.3.3.我也yum删除了预装的PHP 5.1.*只是为了确保.但iconv仍在使用glibc版本.
ldd /usr/lib/httpd/modules/libphp5.so 给
linux-gate.so.1 => (0x003b1000)
/usr/local/lib/preloadable_libiconv.so (0x00110000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x001ed000)
librt.so.1 => /lib/librt.so.1 (0x0021f000)
libmysqlclient.so.15 => /usr/lib/mysql/libmysqlclient.so.15 (0x003b2000) …Run Code Online (Sandbox Code Playgroud) 我使用iconv库来连接从使用UTF-8的现代输入源到使用Latin1的遗留系统,即CP1252(ISO-8859-1的超集).
界面最近未能转换法语字符串"Éducation",其中"É"编码为十六进制45 CC 81.请注意,目标编码的确具有"É"字符,编码为C9.
为什么iconv无法转换为"É"?我检查过MacOS X 10.7.3提供的iconv命令行工具说它无法转换,并且PERL iconv模块也失败了.
令人费解的是,"É"字符(编码为C3 89)的预组合形式转换得很好.
这是iconv的错误还是我错过了什么?
请注意,如果我尝试从UTF-16转换(其中"É"编码为00 C9组合或00 45 03 01分解),我也会遇到同样的问题.
有没有办法使用grep进行重音不敏感搜索,最好保留--color选项?通过这个我的意思grep --secret-accent-insensitive-option aei是匹配àei,但也äēì和可能æi.
我知道我可以iconv -t ASCII//TRANSLIT用来删除文本中的重音,但我不知道如何使用它来匹配文本被转换(它适用于grep -c或-l)
我有一堆正在处理的文本/ html文档
其中一些包含编码的html实体,我试图将其转换为原始解码的utf字符.
这很容易使用html_entity_decode,但是,某些实体是无效的,例如
򙦙
Run Code Online (Sandbox Code Playgroud)
出于这个原因,我正在使用正则表达式来提取每个单独的实体,然后尝试以某种方式验证它们.
如果一个实体无效,我想把它保留򙦙在文档中,但像编码的东西&仍然会变成&.
只是一些示例测试代码我敲了..
<?php
function dump_chars($s)
{
if (preg_match_all('/&[#A-Za-z0-9]+;/', $s, $matches))
{
foreach ($matches[0] as $m)
{
$decoded = html_entity_decode($m, ENT_QUOTES, "UTF-8");
echo "[" . htmlentities($m, ENT_QUOTES, "UTF-8") . "] ";
echo "Decoded: [" . $decoded . "] ";
echo "Hex: [" . bin2hex($decoded) . "] ";
echo "detect: [" . mb_detect_encoding($decoded) . "]";
echo "<br>";
}
}
}
$payload = "" & ͉ ’ 򙦙";
echo …Run Code Online (Sandbox Code Playgroud)