29915


Perlのプログラムを実行すると以下のエラー内容がでて困っております。  
自分自身、Perlを使うのがはじめてで、非常にざっくりした質問内容になってしまいますが、  
ヒントなどをご教示いただけると助かります。

プログラムの内容は以下のページからダウンロードできます。

[京都大学テキストコーパス
Version.4.0](http://nlp.ist.i.kyoto-u.ac.jp/index.php?%E4%BA%AC%E9%83%BD%E5%A4%A7%E5%AD%A6%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%B3%E3%83%BC%E3%83%91%E3%82%B9)

**エラーメッセージ**  

[code]

    euc-jp "\xE7" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\x84" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\xA1" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\xBD" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\x99" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\xE9" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\x8C" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\x8A" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\x81" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\x93" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\xE3" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\x81" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\x9D" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\xE5" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\x84" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\x81" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\x97" does not map to Unicode at ./src/format.pl line 91.
    euc-jp "\xE3" does not map to Unicode at ./src/format.pl line 91.
    
[/code]


CC BY-SA 4.0
2016-10-22T15:35:23.610
29809
2019-12-18T05:51:33.330
2019-12-18T04:34:11.660
3060
7699
question
perl
Perlで euc-jp "\xE7" does not map to Unicode というエラーが出る


このファイル自体がEUCで記述されていて、内部的にもEUCで動かすように想定されていますが、  
「STDIN」に渡す文字コードがEUCではないのでしょう・・・。

動作環境がわかりませんが、全部UTF8にコンバートしてしまえばいいかも知れません。


CC BY-SA 3.0
2016-10-26T10:06:24.317
29915
2016-10-26T10:06:24.317
13291
29809
answer


同様のエラーをUbuntu18.04LTSで発生させましたが，解決した方法を記述します．  
1) CentOS 7系のサーバ上に KyotoCorpus4.0 と mai95.txt (SJIS) を移動  
2) src/format.pl と src/dupli.pl を EUC-JP環境で最初の部分を下記のように書き換えます

[code]

    format.pl
    
    #use encoding 'euc-jp';
    #use open IO => ':encoding(euc-jp)';
    #binmode(STDERR, ':encoding(euc-jp)');
    #binmode STDOUT, ':encoding(euc-jp)';
    use encoding 'euc-jp', STDOUT => 'euc-jp';
    
[/code]

また

[code]

    dupli.pl
    use encoding 'euc-jp', STDOUT => 'euc-jp';
    
[/code]

これで auto_convを実行します． KytoCorpus4.0 ディレクトリで  
sh auto_conv -d mai95.txtがあるディレクトリ  
実行時にエラーが出なければOKです．

[code]

    converting mai95.txt to SGML ...
    making KyotoCorpus (syn) ...
    converting 950101 ...
    converting 950103 ...
    ..略..
    converting 9501ED ...
    converting 9502ED ...
    converting 9503ED ...
    ..
    
[/code]

KyotoCorpus は1月が全記事にアノテーションされていて価値が高いですが他の月も社説記事に対して情報が付与されているのと，NAIST Text
Corpusを戻す際には

[code]

    dat/num/{9501ED.org, 9502ED.org.. } 
    
[/code]

など他の月のテキストデータが出力されている必要があり， EUC-JPでの処理ができていないと出力されず困ることになります．  
Ubuntu18.04LTSでは成功していません．


CC BY-SA 4.0
2019-12-18T03:12:03.723
61532
2019-12-18T05:51:33.330
2019-12-18T05:51:33.330
37115
37115
29809
answer