我无法在生成的.docx中显示欧元符号(€)。我得到的只是方形。
我首先想到的是编码问题,但我的脚本中没有指定任何编码。我已经为HTML页面指定了字符集,在SQL数据库中为其他项目指定了字符集(UTF8会这样做)但是有问题的实现都没有使用。
我发生的另一件事是docx在服务器上创建,并从那里下载以进行打印。可以归咎于服务器环境吗?我无法在网上找到更改docx编码的方法。
理想情况下,我喜欢文档内修复,而不是让托管公司修改设置。
这是代码:
$textrun->addText('If you wish to have a script remarked we will charge €35 for this.);
答案 0 :(得分:1)
$fa_euro = html_entity_decode('', 0, 'UTF-8');
$section->addText(utf8($fa_euro));
Google是你的朋友: https://github.com/PHPOffice/PHPWord/issues/780
同样在脚本的顶部设置了这个:
mb_internal_encoding("UTF-8");
答案 1 :(得分:1)
尽管这个答案可能来得很晚,但对于仍遇到与该问题有关的困难的人来说可能有用。
一个简短而简单的解决方案是使用PHP的 utf8_decode()函数,该函数将字符串转换为UTF-8格式(PHP Documentation)。
在PHPWord文档中分配值时,如果传递了UTF-8格式的字符串,则会在文档中正确插入特殊字符,包括货币符号,带有变音符号的德语字符。
示例:
$PHPWord = new PHPWord();
$document = $PHPWord->loadTemplate('template.docx');
$document->setValue('variable', utf8_decode($value));
一种特殊情况是在某些Linux发行版中通过Nano(CLI编辑器)编辑脚本时-如果您对包含特殊字符的任何字符串进行了硬编码,则在保存文件后它们将转换为另一种编码。
编辑:在遗留系统上不使用第三个参数的情况下,使用 htmlspecialchars 函数时要小心,因为该参数的默认值因PHP版本(PHP 5.4 Compatibility)而异。
答案 2 :(得分:0)
phpword不支持像&amp ;;这样的特殊符号或者<或者>等等..为了解决它我已经用过这个:
$n = htmlspecialchars("your string with special chars");
$section->addText($n);