2017-01-04 2 views
3

これはおそらく非常に基本的ですが、私は他にどこに依頼するのか分かりませんでした。私はポルトガル語で書かれたファイルからSLIME REPLのテキスト情報を処理しようとしていますので、é、á、ôなどのアクセント文字をたくさん使用します。Common Lisp(SBCL)でアクセントを処理する方法は?

私はテキストを扱っています英語で私は次の関数を使用します「デコードできないオクテットのシーケンス番号(195)」エラーを与えて、アクセント付き文字を読み取ることができません

(defun txt2list (name) 
    (with-open-file (in name) 
     (let ((res)) 
     (do ((line (read-line in nil nil) 
        (read-line in nil nil))) 
     ((null line) 
     (reverse res)) 
     (push line res)) 
    res))) 

を。

私の質問です:これらの文字を自動的に操作する方法はありますか? ( "á 'が' a 'に変わる)文字を削除するか、単に読み込む前にファイル自体で行われているかどうかに関わらず、このような文字を削除するだけでよいのです('cômodo 'は' cmodo 'に変わります)読書プロセス。

答えて

5

ファイルに使用されているテキストエンコーディングを調べる必要があります。その後、WITH-OPEN-FILEに正しいものを使用するように指示します。

SBCLのマニュアルを参照してください:External Formats

例:

(with-open-file (stream pathname :external-format '(:utf-8 :replacement #\?)) 
    (read-line stream)) 
+0

はどうもありがとうございました。同じ疑問を持っている人にとっては、latin1と一緒に働いていました。 –

関連する問題