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是一个非常小的字符集,甚至不能编码 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |