加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHPWord:创建阿拉伯语从右到左的单词文档

发布时间:2020-12-13 17:43:32 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试使用 PHPWord创建一个word文档,其中包含从MySQL数据库中提取的动态数据.数据库有MySQL字符集:UTF-8 Unicode(utf8) MySQL连接排序规则:utf8_unicode_ci,表字段也是如此. 数据以HTML格式存储和预览,但是在使用阿拉伯语变量创建文档时,Word中的输出
我正在尝试使用 PHPWord创建一个word文档,其中包含从MySQL数据库中提取的动态数据.数据库有MySQL字符集:UTF-8 Unicode(utf8)
MySQL连接排序规则:utf8_unicode_ci,表字段也是如此.

数据以HTML格式存储和预览,但是在使用阿拉伯语变量创建文档时,Word中的输出看起来像???ù?ˉù?¨?§?±ù?§ùù?±ù.

$PHPWord = new PHPWord();
$document = $PHPWord->loadTemplate('templates/.../wtvr.docx');
$document->setValue('name',$name);
$document->setValue('overall_percent_100',$overall_percent_100);
$document->save('Individual Report - ' . $name . '.docx');

反正有没有解决这个问题?

解决方法

嗯,是.但不幸的是,您必须修改库.该库的作者显然使用utf8_encode / utf8_decode而不理解它们的作用.

在第150行,共享/ String.php:

更换

public static function IsUTF8($value = '') {
    return utf8_encode(utf8_decode($value)) === $value;
}

public static function IsUTF8($value = '') {
    return mb_check_encoding($value,"UTF-8");
}

然后,如果你这样做

$grep -rn "utf8_encode" .

在项目根目录中,您将找到使用utf8_encode的所有行.你会看到像这样的行

$linkSrc = utf8_encode($linkSrc); //$linkSrc = $linkSrc;

$givenText = utf8_encode($text); //$givenText = $text;

您可以简单地删除注释中显示的utf8_encode.

为什么utf8_encode / utf8_decode错了?首先,因为那不是他们所做的.他们做的是from_iso88591_to_utf8和from_utf8_to_iso88591.其次,ISO-8859-1几乎从未使用过,通常当有人声称他们使用它时,他们实际上使用的是Windows-1252. ISO-8859-1是一个非常小的字符集,甚至不能编码

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读