[mecab-devel 107] ウインドウズ用バイナリーパッケージでインストールした際の文字セットについて

Zurück zum Archiv-Index
Sae miyab****@yd6*****
2021年 5月 6日 (木) 11:03:12 JST


初めまして まさえと申します。よろしくお願いします。

 先日からMeCabを使わせていただいています。


 ユーザー辞書を使おうとしていますが、mecabrcに記載しても、libmecabを-uオプション付きで

呼び出し時もエラーになるため困っています。

まず、 mecabrc にユーザー辞書を記載してコマンドプロンプトで

D:\Mytool\mecab-0.996>mecab -D
filename:       C:\Program Files (x86)\MeCab\etc\..\dic\ipadic\sys.dic
version:        102
charset:        shift-jis
type:   0
size:   2739849
left size:      1316
right size:     1316

filename:       C:\Program Files (x86)\MeCab\dic\ipadic\fantasy.dic
version:        102
charset:        shift-jis
type:   1
size:   309
left size:      1316
right size:     1316

 と表示されました。charsetはshift-jis で、コマンドプロンプトからはユーザ辞書は

正常?に認識されているようにみえます。テスト解析していないので・・・

mecabrcにユーザー辞書を記載したままでlibmecabを呼び出しても

エラーになるため、ユーザー辞書の記載をコメントアウトして作成中のアプリで

     if (( model = mecab_model_new2( "" )) == NULL )
//    if (( model = mecab_model_new2( "-u C:\\Program Files 
(x86)\\MeCab\\dic\\ipadic\\fantasy.dic" )) == NULL )
     {    CString errorMessage = ( LPCTSTR )MeCab::getLastError();

         AfxMessageBox( errorMessage ); // 
上の-uオプション付きではエラーになり、このまま表示しても

                                                             // 
文字化けなのでerrorMessage をみると
//+        m_pszData    "viterbi.cpp(50) [tokenizer_->open(param)] 
tokenizer.cpp(130) [sysdic->isCompatible(*d)]
// incompatible dictionary: C:\Program Files 
(x86)\MeCab\dic\ipadic\fantasy.dic "    wchar_t *
         return ( -1 );
     }
     if (( mecab = mecab_model_new_tagger( model )) == NULL )
     {    return ( -1 );
     }
     const mecab_dictionary_info_t *pDict = mecab_dictionary_info( mecab );

辞書情報を覗くと

-        pDict    0x000000000174ca60 {filename=0x000000000174c980 
"C:\Program Files (x86)\MeCab\etc\..\dic\ipadic\sys.dic" 
charset=0x0000000008d20028 "utf-8" size=2739849 ...}    const 
mecab_dictionary_info_t *
+        filename    0x000000000174c980 "C:\Program Files 
(x86)\MeCab\etc\..\dic\ipadic\sys.dic"    const char *
+        charset    0x0000000008d20028 "utf-8"    const char *
         size    2739849    unsigned int
         type    0    int
         lsize    1316    unsigned int
         rsize    1316    unsigned int
         version    102    unsigned short
+        next    0x0000000000000000 {filename=??? charset=??? size=??? 
...}    mecab_dictionary_info_t *

 Visual stadioでpDict の中身はutf-8となっていました。

 mecabをコマンドプロンプトで実行した際と、libmecabを呼び出した際でシステム辞書の文字セットが

変わるのでしょうか?バイナリーパッケージの辞書の真の文字セットは何なんでしょうか?よろしくお願いします。

 コマンドプロンプトでの文字セットが合っていたため、かなり悩んで、辞書情報を観てみると違っていました。



 



Mecab-devel メーリングリストの案内
Zurück zum Archiv-Index