ITADN

cannot print records with labels that contain Unicode characters

#239Openkindaro 创建于 2025-09-28
K
kindarocommented
# see for yourself 1. Create files as follows: * `cassava-unicode.cabal` ``` Cabal cabal-version: 3.0 name: cassava-unicode version: 0.1.0.0 executable cassava-unicode main-is: Main.hs build-depends: base, cassava, bytestring hs-source-dirs: app default-language: Haskell2010 ``` * `app/Main.hs` ``` Haskell {-# LANGUAGE DeriveGeneric #-} module Main where import GHC.Generics import qualified Data.Csv as Csv import qualified Data.ByteString.Lazy as Bytes data Ξ = Ξ {ξ :: Int} deriving (Generic) instance Csv.ToNamedRecord Ξ instance Csv.DefaultOrdered Ξ main :: IO () main = Bytes.putStr (Csv.encodeDefaultOrderedByName [Ξ {ξ = 0}]) ``` 1. Run `cabal run` in command line. # what should happen A single row of CSV is printed, preceded by a header. # what does happen ``` cassava-unicode: Uncaught exception ghc-internal:GHC.Internal.Exception.ErrorCall: Data.Csv.Encoding.namedRecordToRecord: header contains name "\190" which is not present in the named record HasCallStack backtrace: error, called at src/Data/Csv/Encoding.hs:338:24 in cassava-0.5.4.1-a9e31c482b17af1df9a0e84111b5c8cff967d1a40cd48edc5a44579637a7df84:Data.Csv.Encoding ``` # versions * GHC 9.12.2 * `cassava` 0.5.4.1 * `text` 2.1.2 * `bytestring` 0.12.2.0
2 条评论