[PHP-users 17261]COMオブジェクトへのマルチバイト文字列の引渡しについて
Tuffy Rhodes
tuffyrhodes2000 @ yahoo.co.jp
2003年 8月 9日 (土) 12:09:56 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>
__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!
http://bb.yahoo.co.jp/
PHP-users メーリングリストの案内