私のテキストのアクセントは に変換されることに気付きました。 私はそれを次の例に煮詰めました。この例では、 はtest.txtというファイルを書き込みます(上書きします)。HaskellのUtf8とオーバーロードされた文字列
ユニコードテキストを扱うために とされているData.Textのメソッドを排他的に使用します。ソースファイル と出力ファイルの両方がutf8でエンコードされていることを確認しました。
{-# LANGUAGE OverloadedStrings #-}
import Prelude hiding (writeFile)
import Data.Text
import Data.Text.IO
someText :: Text
someText = "Université"
main :: IO()
main = do
writeFile "test.txt" someText
コードを実行した後、test.txtには以下が含まれます。 GHCiの中 、私は次のよう
*Main> someText
"Universit\233"
が、これはすでに間違ってエンコードされ得ますか?私も https://hackage.haskell.org/package/text-1.2.2.2/docs/Data-Text.html、 のcommentにコメントを見つけましたが、上記の例を修正する方法はまだ分かりません。
どのようにしてアクセントをOverloadedStringで使用し、正しくファイルに書き込むことができますか?
文字列は(と私は信じているだけでなくテキスト)「面白い」文字をエスケープした後に印刷されています。これが行われ、ユーザが 'どこ' show'はエスケープん 'putStrLn(ショーの文字列)入力されたかのように引用符を追加します。 'putStrLn string'で裸の文字列/テキストを出力することができます(preludeの代わりに' Data.Text.putStrLn'をテキストに使用してください)。 – chi
ghciのputStrLnがアクセントを正しく示しているので、writeFileでなければなりませんか? – mna