如何强迫 PHP 使用 libiconv 版本的 iconv 而不是 CentOS 安装的 glibc 版本?
我正在处理的代码在Windows XP和Mac OS X上完美运行.在CentOS(以及在Fedora和Ubuntu上)进行测试时,它无法正常工作.搜索网络使我得出这样的结论:iconv的glibc版本引起了问题.因此,现在我需要iconv iconv的版本才能使Zend Lucene正常工作. 我已经下载了libiconv并使用--prefix=/usr/local,make进行配置,然后make install没有任何错误.看来它已成功安装,因为执行/usr/local/bin/iconv --version说该版本是libiconv.虽然简单iconv --version仍然给出glibc版本. 然后,我使用--with-iconv=/usr/local从源重新编译了PHP.但是,尽管如此,phpinfo()正在显示所使用的iconv是glibc版本.我也已经尝试使用--with-iconv-dir或使用/usr/local/bin/php的其他几个编译. 当然,
4 2024-02-27
编程技术问答社区
如何安装libiconv for android ndk?
有人可以教我或指向我如何为Android安装Libiconv的教程?我已经谷歌搜索了3天,但找不到教程或操作方法. 解决方案 获取libiconv源,然后制作一个android.mk makefile.查看这个网站 for for Predrenting Makefile libiconv和android.拥有Android.mk文件后,您可以使用NDK-Build脚本构建. 其他解决方案 我的猜测是您不需要Android上的ICONV. Android到处都是UTF-8,因此不需要角色转换.也许在某些情况下,您希望您的应用程序以各种charset编辑外国文件,这是我能想到Android应用需要ICONV的唯一原因. 因此,也许您应该更改所需的任何代码,而不是尝试包括Libiconv,以便在Android上运行时不需要它.
0 2024-02-17
编程技术问答社区
使用Android独立工具链构建libiconv失败
当我尝试使用Android NDK独立工具链(android-ndk-r5-crystax-2)构建libiconv时,我得到此错误输出.有人可以告诉我可能出了什么问题吗? 我的环境看起来像这样: export NDK=$HOME/android/android-ndk-r5-crystax-2 export TOOLCHAIN=$HOME/android/toolchain export ARCH=armv7-a export SYSROOT=$TOOLCHAIN/sysroot export PATH=$PATH:$TOOLCHAIN/bin:$SYSROOT/usr/local/bin export CROSS_COMPILE=arm-linux-androideabi export CC=${CROSS_COMPILE}-gcc export CXX=${CROSS_COMPILE}-g++ export AR=${CROSS_COMPILE}-ar export A
2 2024-02-07
编程技术问答社区
Mac OS X上的iconv库:奇怪的行为
我将应用程序从CentOS 6移植到Mac OSX.这取决于ICONV,并且正常工作.但是,在Mac OS X上没有.我看到以下行为: const char *codePages[] = { "MAC", "LATIN1", "ISO_8859-1", "WINDOWS-1252", "ASCII" }; int codePagesCount = 5; iconv_t converter1 = iconv_open("UTF-32", codePages[0]);// Works if(converter1 != (iconv_t)-1) iconv_close(converter1); iconv_t converter2 = iconv_open("UTF−32", "MAC");// Fails, returns -1 if(converter2 != (iconv_t)-1) iconv_close(converter2); 这件代码看起来很琐碎:第一个IC
8 2023-12-19
编程技术问答社区
libiconv没有链接到iOS项目
我正在尝试编译 mailCore 正在正在制作的iOS应用中,并且链接器不断抱怨libiconv isn''链接.至少这就是我认为它在抱怨的.这就是它吐出的: Undefined symbols for architecture i386: "_iconv", referenced from: _mail_iconv in libmailcore.a(charconv.o) "_iconv_open", referenced from: _charconv in libmailcore.a(charconv.o) _charconv_buffer in libmailcore.a(charconv.o) "_iconv_close", referenced from: _charconv in libmailcore.a(charconv.o) _charconv_buffer in libmailcore.a
0 2023-12-18
编程技术问答社区
在Windows中无法改变文本文件的编码
我有一些带有不同编码的文本文件.其中一些是UTF-8,而另一些则是windows-1251编码.我试图执行以下递归脚本以将其全部编码为UTF-8. Get-ChildItem *.nfo -Recurse | ForEach-Object { $content = $_ | Get-Content Set-Content -PassThru $_.Fullname $content -Encoding UTF8 -Force} 之后,我无法在Java程序中使用文件,因为编码的UTF-8编码也错误编码,所以我无法收回原始文本.如果Windows-1251编码文件,我将获得空输出,例如原始文件.因此,它使已损坏的已经是UTF-8编码的文件. 我找到了另一个解决方案iconv,但是正如我所看到的,需要当前编码为参数. $ iconv options -f from-encoding -t to-encoding inputfile(s) -o outputfile
12 2023-12-06
编程技术问答社区
在Ruby中用Watir填写text_field时的编码问题
我正在使用watir用我在另一个程序中刮擦的html代码来填写text_field. 我要转移的网站包含的语言是德语,因此涉及一些特殊字符,在英语字母中不存在. 这些字符在HTML文件中正确显示,但是当转移到Joomla安装的Text_field时(我正在使用此程序将网站传输到Joomla)时,特殊字符未正确显示. > 由于用户提供了很大的帮助,我已经能够解决以下问题的解决,现在正在使用以下方法传输内容: browser.text_field(:id => "text").value=(open('my-site.html') { |f| f.read }) 结果是,特殊字符显示如下: über => ³ber vergißt => vergi▀t wählen => wõhlen geförderter => gef÷rderter 用户猜测它与我正在使用的编码和编码问题有关.运行DOS:CHCP导致850的输出. 他解决问题的尝试
10 2023-11-27
编程技术问答社区
调用未定义的函数Symfony\Polyfill\Mbstring\iconv_strlen()。
我的项目在Localhost上正常工作,但不在网上工作,这是错误: Fatal error: Call to undefined function Symfony\Polyfill\Mbstring\iconv_strlen() in /home/stram/public_html/vendor/symfony/polyfill-mbstring/Mbstring.php on line 338 我谷歌搜索了它,发现我需要安装PHP扩展iconv.我正在使用VP的问题,当我进入可用的PHP扩展名列表时,我没有找到此扩展! thnx提前. 解决方案 Symfony为此类案例提供了一个ICONV-POLYFILL.只需将其添加为您的项目的要求,您就可以了: composer require symfony/polyfill-iconv 其他解决方案 也可能发生了您使用的过时版本的php,或,它是在没有iConv的情况下编译的. 要检查一下,运行php
2 2023-11-25
编程技术问答社区
将转义的代码点转换为unicode字符
我正在尝试取一块带有字符串字符的json,我想将这些字符转换为其关联的单座字符,在这种情况下为é. 我使用curl或wget下载看起来像: 的JSON { "name": "Kitsun\u00e9" } ,需要将其转换为: { "name": "Kitsuné" } 我的第一个想法是使用VIM的Iconv,但它不会将字符串评估为一个字符,而只是返回输入. let code = '\u00e9' echo iconv(code, "UTF-8", "UTF-8") " Prints \u00e9 我最终想使用 之类的东西 %s;\\u[0-9abcdef]*;\=iconv(submatch(0),"UTF-8", "UTF-8");g 解决方案 此行适用于您的示例: s#\\u[0-9a-f]*#\=eval('"'.submatch(0).'"')# 或 s#\v\\u([0-9a-f]{4})#\=nr2char(str2
8 2023-11-19
编程技术问答社区
通过系统从Ruby 1.8.7调用iconv,将文件从utf-16转换为utf-8
这是我得到的: path_js = 'path/to/a/js/file.js' path_new_js = 'path/where/the/converted/file/should/go.js' puts('iconv -f utf-16le -t utf-8 ' + path_js + ' > ' + path_new_js) system('iconv -f utf-16le -t utf-8 ' + path_js + ' > ' + path_new_js) puts语句的输出是: iconv -f utf-16le -t utf-8 path/to/1-1-2_E1_MC105.js > compiled/path/to/1-1-2_E1_MC105.js 如果我在终端中复制完全相同的行,转换会成功进行,但是当它在我的ruby脚本内运行时,新文件是用与原始文件相同的编码创建的(在这种情况下是UTF-16) .关于缺少/错的任何想法? 欢呼!
0 2023-11-12
编程技术问答社区
iconv返回奇怪的结果
我正在努力解决自动脚本中特殊字符的问题,以在PHP中创建帐户.由于特殊字符在电子邮件地址和我试图摆脱的其他地方不需要,但是在将它们馈送到脚本之前,我无法将其删除,因为用户名必须正确显示给其他用户. 示例: JörgenGötz应该获得电子邮件地址jorgen.gotz@domain.com,但在用户数据库中,他的名字仍然应该是Jörgen和他的姓氏Götz.我希望我不清楚我想实现的目标. 我一直在尝试ICONV(),但是我遇到了一些麻烦.请参阅下面的代码. $ utf8_sentence ='Weiß,Goldmann,Göbel,Weiss,Göthe,Goethe undGötz'; setlocale(lc_all,'en_gb'); echo $ trans_sentence = iconv('utf-8','ascii//translit',$ utf8_sentence); 上面的代码应返回 Weiss,Goldmann,Gobel,
0 2023-11-12
编程技术问答社区
将Windows-1250转换为UTF8时避免双重转换
可能的重复: 在编码之间只有一些错误的文件? 我使用以下命令将.srt文件从文件夹从Windows-1250转换为UTF-8 for /f "delims=" %%a IN (' dir C:\utf_check\*.srt /b /s ') do %iconv% -s -f windows-1250 -t utf-8 %%a.txt 我对此有问题,如果文件已经是UTF-8,则ICONV会破坏文件插入奇怪的字符.有没有办法首先检测到UTF-8或ASCII,然后将其转换?我尝试了Flip,Enca,Encov,Recodode no Suckes. 我使用Windows 2003服务器,我也安装了Cygwin,也许会有所帮助. 示例:那就是在UTF-8 aşezaţi-vă的文本. 这是ICONV再次转换后的文字. 解决方案 Windows-1250编码中没有明智的文本将永远是有效的UTF-8.因为UTF-8中代表字符以外的字符的字节对
10 2023-11-12
编程技术问答社区
PHP函数iconv字符编码从iso-8859-1改为utf-8
我正在尝试将一个从ISO-8859-1转换为UTF-8的字符串. 但是当我发现这两个charachter€和•功能返回时 一个正方形的charachter,内部有两个数字. 如何解决此问题? 解决方案 我认为您正在寻找的编码是 Windows Code Page 1252 (西欧).它与ISO-8859-1不同(或在此问题为8859-15);范围0xa0-0xff匹配范围内的字符8859-1,但CP1252在范围0x80-0x9f中添加了各种额外字符,其中ISO-8859-1分配了少量使用的控制代码. 混乱之所以出现,是因为当您以text/html;charset=iso-8859-1的形式提供页面时,出于历史原因,浏览器实际上使用CP1252(因此,也将在CP1252中提交表格). iconv('cp1252', 'utf-8', "\x80 and \x95") -> "\xe2\x82\xac and \xe2\x80\xa2" 其他解决方案 始终先
4 2023-11-12
编程技术问答社区
PHP DOM UTF-8问题
首先,我的数据库使用Windows-1250作为本机charset.我将数据输出为UTF-8.我在我的网站上使用iconv()函数将Windows-1250字符串转换为UTF-8字符串,并且非常完美. 问题是我使用PHP DOM来解析数据库中存储的一些HTML(HTML是来自Wysiwyg编辑器的输出,无效,它没有HTML,Head,Body Tags等). HTML看起来像这样的东西,例如: Hello 这是我用来从数据库中解析某些HTML的一种方法: private function ParseSlideContent($slideContent) { var_dump(iconv('Windows-1250', 'UTF-8', $slideContent)); // this outputs the HTML ok with all special characters $doc = new DOMDocumen
4 2023-11-12
编程技术问答社区
Ruby Iconv在irb和ruby调试器中工作,但在单元测试中不工作。
我在Ubuntu 10.04 64位上运行Ruby 1.8.7.我已经写了一种方法,该方法应该采用这样的字符串,"École À la Découverte"并输出一个像这样的文件系统名称"ecole_a_la_decouverte": (Iconv.new('US-ASCII//TRANSLIT', 'utf-8').iconv "École À la Découverte").downcase.split.join('_') 当我在代码中测试这一行时,测试总是失败,说"cole_la_dcouverte"与"ecole_a_la_decouverte"不等.奇怪的是,如果我插入调试器线并使用调试器控制台,则测试通过.同样,在irb和./script/console中手动运行此行似乎有效. 有人知道发生了什么,为什么该测试失败了?我唯一的想法是,包括调试器或irb以某种方式增加了对UTF-8的更多支持,但我不知所措地弄清楚下一步. 预先感谢! 解决方案 这
4 2023-11-11
编程技术问答社区
纯粹bash中的字符串规范化
字符'é'(E\xcc\x81)和'é'(\xc3\x89)具有不同的代码点.它们看起来相同,但是在测试匹配时,结果为负. python可以使它们归一化,但是:unicodedata.normalize('NFC', 'É'.decode('utf-8')) == unicodedata.normalize('NFC', 'É'.decode('utf-8'))返回True.它以é的印刷. 问题:有没有办法将纯bash*中的字符进行归一化?我已经研究了iconv,但据我所知,它可以转换为ASCII,但没有归一化. *gnu bash,版本3.2.57(1)-Release(x86_64-apple-darwin14)) 解决方案 如果您有 uconv 可用,那可能会完成这项工作: $ echo -en "E\xcc\x81" | uconv -x Any-NFC | hexdump -C 00000000 c3 89 $ echo -en "\xc3\
14 2023-11-11
编程技术问答社区
PHP。将"'"字符从ISO-8859-1转换为UTF-8的问题
我在使用PHP将ISO-8859-1数据库内容转换为UTF-8时遇到了一些问题.我正在运行以下代码进行测试: // Connect to a latin1 charset database // and retrieve "Georgia O’Keeffe", which contains a "’" character $connection = mysql_connect('*****', '*****', '*****'); mysql_select_db('*****', $connection); mysql_set_charset('latin1', $connection); $result = mysql_query('SELECT notes FROM categories WHERE id = 16', $connection); $latin1Str = mysql_result($result, 0); $latin1Str = substr($latin
8 2023-11-11
编程技术问答社区
mySQL和PHP的编码
嗨,我对此查询有问题 SELECT * FROM table WHERE `name` LIKE '%tést%' HMTL和SQL表都有UTF-8编码,但不幸的是没有mysql_set_charset('utf-8'),我 都能使用它. 我尝试了iconv("UTF-8", "ISO-8859-1", $name),但是查询仅匹配test. 我想匹配所有这些:test, tést, tèst, tëst(因为它可以与mysql_set_charset一起使用) 编辑: SET NAMES utf8可能会...数据库 IS 使用UTF8编码,不幸的是,内容是从Web填充的,没有mysql_set_charset nor SET NAMES. . 当前使用这些功能,结果被弄乱了. version() 5.1.41-3ubuntu12.9 edit2: 当我使用SET NAMES utf8时,它仅匹配tést,它们看起来像tést
14 2023-11-11
编程技术问答社区
PHP,将UTF-8转换为ASCII 8位
我尝试使用iconv函数将字符串从UTF-8转换为ASCII 8位.该字符串旨在将其导入到会计软件中(某些基本说明据SIE标准相应解析). 我现在正在运行的内容: iconv("UTF-8", "ASCII", $this->_output) 这适用于会计软件#1,但是软件#2抱怨编码.标准编码的指定编码为:IBM PC 8-bit extended ASCII (Codepage 437). 我的问题是,ASCII的哪个版本是PHP编码我的字符串,如果指定了其他版本 - 如何将字符串相应地编码为标准规范? 解决方案 尝试使用此软件#2 iconv("UTF-8", "CP437", $this->_output); 扩展的ASCII与普通ASCII不同. 第一个也许接受ASCII,但是第二个软件需要扩展ASCII -CODEPAGE 437 请参阅此 link
4 2023-11-11
编程技术问答社区
将Javascript的UTF-8转换为ASCII(如PHP中的Iconv('UTF-8', 'ASCII//TRANSLIT', $string)
我想知道如何使用javaScript中的utf-8中"翻译" utf-8中的字符,就像php中的iconv doest一样. . 示例: ü变为 我宁愿不使用替换永远不要确定我是否缺少一个或两个. 解决方案 @pointy所说,您唯一的选择是根据字典映射/替换字符. 您会发现这非常有用:其他解决方案 我发现的最简单方法: var str = "üó"; var combining = /[\u0300-\u036F]/g; console.log(str.normalize('NFKD').replace(combining, '')); 其他解决方案 现在有一个ICONV的端口: com/package/iconv var iconv = new Iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE'); iconv.convert('ça va が'); // "ca va "
14 2023-11-11
编程技术问答社区