我正在构建一个需要通过COM对象创建Word文档的PHP应用程序。我通过检查记录的测试宏的代码找到了大部分所需的函数,但我仍然找不到传递西里尔字符的写方式。我正在尝试以下方法:
$word->Selection->TypeText(ChrW(1091) & ChrW(1085) & ChrW(1080) & ChrW(1074) & ChrW(1077) & ChrW(1088) & ChrW(1089) & ChrW(1080) & ChrW(1090) & ChrW(1077) & ChrW(1090));
我收到以下错误:
致命错误:调用未定义的函数ChrW() 第42行的C:\ xampp \ htdocs \ xampp \ COM \ test.php
不幸的是我找不到COM对象的任何文档,特别是对于PHP,所以我在这里提出我的问题,希望有人可以帮助我。
答案 0 :(得分:1)
我知道这是一个老问题,但我在使用PHP和COM将毛利字符发送到Word时遇到了类似的问题。答案是我如何创建COM对象:
$wordApp = new COM("word.application", null, CP_UTF8); // <-- Important to specify codepage CP_UTF8
// Open document...
...
$text = "Chars with macrons: Ā ā Ē ē Ī ī Ō ō Ū ū"; // UTF-8 string
$wordApp->Selection->TypeText($text);
...
COM的第三个参数是代码页,它指定对传入/传出COM对象的字符串使用的转换。通过指定 CP_UTF8 ,我告诉COM我将传入的所有字符串(如$text
中的$wordApp->Selection->TypeText($text);
)将使用UTF-8和我收到的所有字符串进行编码,我想用UTF-8编码。如果您未指定代码页,则使用默认值,可能是Windows-1252(Western)。
有关详细信息,请点击此处:http://php.net/manual/en/class.com.php。
答案 1 :(得分:0)
我在我的文档中得到了奇怪的符号:унивÐμÑ€ÑиÑ,ÐμÑ
我不确定Word文档的字符集是什么以及推荐的方法是什么。
如果没有任何权威信息,我会尝试将数据提供给它并在字符集之间进行转换,直到它工作。
确保您的PHP文件是UTF-8编码,然后尝试
$text = "Привет, как дела";
$word->Selection->TypeText(iconv("utf-8", "utf-8", $text); // no conversion
$word->Selection->TypeText(iconv("utf-8", "iso-8859-5", $text); // cyrillic codepage
$word->Selection->TypeText(iconv("utf-8", "utf-16", $text); // not sure whether this will work
其中一个可能适合您,具体取决于文档的字符编码。
可能有一种COM方法来定义文档的编码。如果有,那将是使用它并将编码设置为UTF-8的理想方式。