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

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了PHPWord:创建阿拉伯语从右到左的单词文档脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用 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是一个非常小的字符集,甚至不能编码€,更不用说阿拉伯字母了.

您可以通过执行以下操作快速查看库:

$grep -rn "utf8_\(en\|de\)code" .

如果你得到匹配,你应该继续前进并寻找其他的库.这些函数每次都只是做错了,即使有人需要一些边缘情况来使用这些函数,当你真正需要ISO-8859-1时,最好明确它,因为你通常不会这样做.

脚本宝典总结

以上是脚本宝典为你收集整理的PHPWord:创建阿拉伯语从右到左的单词文档全部内容,希望文章能够帮你解决PHPWord:创建阿拉伯语从右到左的单词文档所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。