[PHP-users 17400]COMオブジェクトへのマルチバイト文字 列の引渡しについて
tuffyrhodes2000 @ yahoo.co.jp
tuffyrhodes2000 @ yahoo.co.jp
2003年 8月 21日 (木) 00:46:31 JST
高松と申します。
以前送信したメールが送れてなかったようなので、再送します。
PHPからWordドキュメントのテンプレートを開いてドキュメントを
編集し保存する、というのを実現しようとテストしています。
Wordのフォームフィールドに文字列の引渡しをすることは
できたのですが、日本語を渡したときに、渡した文字列の後ろに
変な文字が付加されてしまって困っています。
同じことを VisualBasicでやってみたところ、問題が無かったので、
phpスクリプトの問題かと思い、メールしました。
環境は
Windows2000
apache1.3.26
php4.3.1(CGI)
Office2000
以下、ソースです。(実際はEUCで記述)
-----------------------------------
<?php
$text = "2バイト文字の入力";
// COMオブジェクトの作成
$word = new COM("word.application");
print "Loaded Word, version {$word->Version}<br>\n";
// テンプレートを開く
$doc = $word->Documents->Open("c:\\temp\\formtest.dot");
$doc->Activate;
// ドキュメントを編集する
$doc->FormFields["Text1"]->Result =
mb_convert_encoding( $text, "SJIS", "EUC-JP");
// 作成したドキュメントを保存する
$doc->SaveAs("c:\\temp\\formtest2.doc");
// ドキュメントを閉じる
$doc->Close();
// Wordを閉じる
$word->Quit();
$word->Release();
unset($word);
?>
ok.
--------------------------------
ソース中の、formtext.dot がWordテンプレートで、
Text1というフォームドキュメントがあります。
これを実行すると、Text1は
2バイト文字の入力・?3・・・・・・・
などとなります。
引き渡した後にphpで取り出しvar_dumpしてみると、27バイトでした。
COMの問題かと思いましたが、同じようなことをVB6だと
正常にできました。
何か手がかりでもご存知の方がおりましたら、ご教授願います
。
--
Takamatsu <tuffyrhodes2000 @ yahoo.co.jp>
PHP-users メーリングリストの案内