6

我知道已经在 php 中用阿拉伯语发布了很多问题,但是我无法解决我的问题,因此我发布了这个问题:

我有一个以英语完美运行的 PhP 网站。现在,我希望它支持多种语言,包括法语、西班牙语、阿拉伯语,但我无法通过一个代码使用它们。问题是,我在很多地方都使用了 substr(),但翻译后的字符无法按预期使用 substr()。我也尝试使用 mb_substsr(),但没有用:(

DB中的字段是“utf8_general_ci”,我已经放置了 header('Content-type: text/html; charset=UTF-8'); 在我的代码中允许以 UTF-8 呈现。

问题是我得到“??????” 代替确切的单词,否则我使用 substr() 得到不正确的单词

请帮忙!!

4

3 回答 3

22

对于阿拉伯语单词:我只想获取位置 2 中的字符。

$name = "MYNAME";
$Char = substr($Name,2,2);
echo $Char; // print N this okay.

但是对于阿拉伯语这样的工作كامل,它返回问号

case 1: $Char = substr($Name,0,1);     // Not Work and return question mark
case 2: $Char = substr($Name,1,1);     // Not Work and return question mark
case 3: $Char = substr($Name,0*2,1*2); // Work and return "ك"
case 3: $Char = substr($Name,1*2,1*2); // Work and return "ا"

所以我找到了解决方案:

$Char = mb_substr($Name,1,1,'utf-8');  // Work and return "ا".
于 2012-02-01T18:12:18.783 回答
5

首先,忘记substr。如果您打算用 UTF-8 对字符串进行编码并将它们拆分,那么mb_substr这是唯一可行的解​​决方案。

您还需要确保 MySql 的连接编码也是 UTF-8。通过调用来做到这一点

mysql_set_charset('utf8');

之后mysql_connect。如果您使用的是 mysql 扩展以外的数据访问层(例如 PDO),则有等效的方法来执行此操作。

于 2011-06-25T18:15:39.090 回答
0
  1. 检查您是否使用其他多字节 (mb_*) 函数来处理您的数据。
  2. 检查您的脚本是否保存为 UTF-8 文本文件。
  3. 检查您是否SET NAMES utf8在连接到数据库后立即向数据库发送查询。
于 2011-06-25T18:16:17.810 回答