0

我正在构建一个 PHP 应用程序,它需要通过 COM 对象创建一个 Word 文档。我通过检查记录的测试宏的代码找到了大部分所需的功能,但我仍然找不到传递西里尔字符的写入方式。我正在尝试以下操作:

$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));

我收到以下错误:

致命错误:在第 42 行调用 C:\xampp\htdocs\xampp\COM\test.php 中未定义的函数 ChrW()

不幸的是,我找不到任何 COM 对象的文档,尤其是 PHP 的文档,所以我把我的问题放在这里,希望有人能帮助我。

4

2 回答 2

1

I know this is an old question, but I had a similar problem with sending Māori characters to Word using PHP and COM. The answer was in how I created the COM object:

$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);
...

The third parameter to COM is the codepage and it specifies what conversion to use on strings passed to/from the COM object. By specifying CP_UTF8, I'm telling COM that all strings that I will pass in (like $text in $wordApp->Selection->TypeText($text);) will be encoded using UTF-8 and all strings I receive, I want encoded using UTF-8. If you don't specify the codepage, the default is used, probably Windows-1252 (Western).

For more details check here: http://php.net/manual/en/class.com.php.

于 2015-01-29T03:45:42.467 回答
0

我的 word 文档中出现了奇怪的符号:универÑитеÑ</p>

我不确定 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 的理想方式。

于 2013-06-22T12:46:11.150 回答