标签: iconv

我应该为多字节字符串使用mb_*或iconv_*函数吗?

就像我们现在一样,在PHP中处理多字节字符串并不容易.例如,我想得到以下字符串的长度:ä

strlen('ä'); // 2, because ä equals 2 bytes
mb_strlen('ä', 'UTF-8'); // 1
iconv_strlen('ä', 'UTF-8'); // 1
Run Code Online (Sandbox Code Playgroud)

我应该使用哪些功能?mb_*或iconv_*?为什么?考虑到编码可能不限于UTF-8.

Thx提前!

php unicode iconv multibyte

2
推荐指数
1
解决办法
558
查看次数

PHP DOM UTF-8问题

首先,我的数据库使用Windows-1250作为本机字符集.我输出的数据为UTF-8.我在我的网站上使用iconv()函数将Windows-1250字符串转换为UTF-8字符串,它完美无缺.

问题是当我使用PHP DOM来解析存储在数据库中的一些HTML时(HTML是WYSIWYG编辑器的输出而且无效,它没有html,head,body标签等).

HTML可能看起来像这样,例如:

<p>Hello</p>
Run Code Online (Sandbox Code Playgroud)

这是我用来从数据库中解析某个HTML的方法:

 private function ParseSlideContent($slideContent)
 {
        var_dump(iconv('Windows-1250', 'UTF-8', $slideContent)); // this outputs the HTML ok with all special characters

  $doc = new DOMDocument('1.0', 'UTF-8');

  // hack to preserve UTF-8 characters
  $html = iconv('Windows-1250', 'UTF-8', $slideContent);
  $doc->loadHTML('<?xml encoding="UTF-8">' . $html);
  $doc->preserveWhiteSpace = false;

  foreach($doc->getElementsByTagName('img') as $t) {
   $path = trim($t->getAttribute('src'));
   $t->setAttribute('src', '/clientarea/utils/locate-image?path=' . urlencode($path));
  }
  foreach ($doc->getElementsByTagName('object') as $o) {
   foreach ($o->getElementsByTagName('param') as $p) {
    $path = trim($p->getAttribute('value'));
    $p->setAttribute('value', '/clientarea/utils/locate-flash?path=' . urlencode($path));
   }
  }
  foreach ($doc->getElementsByTagName('embed') as …
Run Code Online (Sandbox Code Playgroud)

php utf-8 iconv domdocument

2
推荐指数
1
解决办法
1万
查看次数

PHP函数iconv字符编码从iso-8859-1到utf-8

我正在尝试将字符串从iso-8859-1转换为utf-8.但当我发现这两个charachter€和•函数返回一个charachter,这是一个内部有两个数字的正方形.

我该如何解决这个问题?

php utf-8 character-encoding iconv

2
推荐指数
1
解决办法
1万
查看次数

我们应该在iOS上使用哪个libiconv?

当我在Xcode中执行"添加现有框架"时,我看到了三个版本的libiconv.

  1. libiconv.dylib
  2. libiconv.2.dylib
  3. libiconv.2.4.0.dylib

这个链接说最新最好的是1.13.1.我不认为它与上面的数字相同.

有线索吗?

unicode iconv ios

2
推荐指数
1
解决办法
5557
查看次数

为什么使用iconv_strpos而不是strpos?

与strpos()相反,iconv_strpos()的返回值是针前面出现的字符数,而不是找到针的位置的偏移量(以字节为单位).(来源:http://www.php.net/manual/en/function.iconv-strpos.php)

以下代码示例显示iconv_strpos()strpos()返回相同的值.

$string = "dd.MM.yy";

echo "d: ".strpos($string, 'd'); // 0
echo "M: ".strpos($string, 'M'); // 3
echo "y: ".strpos($string, 'y'); // 6

echo "d: ".iconv_strpos($string, 'd'); // 0
echo "M: ".iconv_strpos($string, 'M'); // 3
echo "y: ".iconv_strpos($string, 'y'); // 6
Run Code Online (Sandbox Code Playgroud)

为什么我应该使用iconv_strpos而不是strpos?

php iconv strpos

2
推荐指数
2
解决办法
661
查看次数

如何将ISO-8859-8-i转换为UTF-8?

我收到了一封使用charset的电子邮件iso-8859-8-i.iconv说这是一个不受支持的字符集.我试过使用iso-8859-8但是"无效的多字节序列"会出错.知道如何将此字符串转换为UTF-8吗?

c unicode iconv

2
推荐指数
1
解决办法
1786
查看次数

无法链接到OS X上的iconv

我正在尝试用依赖于iconv的CMake构建一个库.我已经用Macports安装它,但每当我尝试构建库时,我都会收到以下错误:

Undefined symbols for architecture x86_64:
  "_iconv", referenced from:
      _mariadb_convert_string in my_charset.c.o
  "_iconv_close", referenced from:
      _mariadb_convert_string in my_charset.c.o
  "_iconv_open", referenced from:
      _mariadb_convert_string in my_charset.c.o
ld: symbol(s) not found for architecture x86_64
Run Code Online (Sandbox Code Playgroud)

我有一个FindIconv.cmake看起来正确的文件.怎么可能出错?

macos macports cmake iconv ninja

2
推荐指数
1
解决办法
2287
查看次数

如何使用 PHP 脚本转换 CSV 文件

我需要将 CSV 文件转换为 UTF-8 并使用 PHP 脚本重命名它。

以下代码在我的 PC 上运行,但现在我需要在服务器上作为 CRON 任务执行此操作

iconv -f UTF-16LE -t UTF-8 OLD-FILE.csv > NEW-FILE.csv

任何人都知道 PHP 中的等价物。非常感谢。

php csv utf-8 iconv

2
推荐指数
1
解决办法
6984
查看次数

在Linux中从EBCDIC转换为UTF8

我已经用Perl从数据库AS / 400 DB2中导入了一个表。

问题在于该字符串以EBCDIC Latin-1(意大利语)编码。

如何在Linux bash中将生成的文件转换为纯utf-8?

linux bash utf-8 iconv ebcdic

2
推荐指数
1
解决办法
7809
查看次数

FreeTDS - 返回UTF-8字符集数据

我正在使用带有PHP PDO的MS SQL Server 2008:我有一个PHP PDO类,它采用Windows字符集并手动将数据转换为UTF-8.就像是:

$sql = "SELECT * FROM something_somewhere);
$query = $this->db->query($sql);
$result = $query->fetchAll(PDO::FETCH_OBJ);
foreach ($result as $row) {
foreach (get_object_vars($row) as $key => $value) {
    $row->$key = (mb_detect_encoding($value, mb_detect_order(), true) === 'UTF-8') 
            ? $value : iconv('iso-8859-1', 'utf-8', $value);
}
$results[] = $row;
Run Code Online (Sandbox Code Playgroud)

}

iconv()效果很好,但是一直写这个很乏味.反正有没有配置FreeTDS转换为UTF-8?

我正在阅读关于Moodle的FreeTDS配置:

https://docs.moodle.org/22/en/FreeTDS

我当前的/etc/freetds.conf文件(不可编辑,所以我必须让管理员更改它):

#   $Id: freetds.conf,v 1.12 2007/12/25 06:02:36 *** Exp $
#
# This file is installed by FreeTDS if no file by the same
# name is found in …
Run Code Online (Sandbox Code Playgroud)

php pdo iconv freetds

1
推荐指数
1
解决办法
3929
查看次数

标签 统计

iconv ×10

php ×6

utf-8 ×4

unicode ×3

bash ×1

c ×1

character-encoding ×1

cmake ×1

csv ×1

domdocument ×1

ebcdic ×1

freetds ×1

ios ×1

linux ×1

macos ×1

macports ×1

multibyte ×1

ninja ×1

pdo ×1

strpos ×1