haskell-servant/servant

UTF-8 `É` incorrectly read as `Ã`

Open

#1,239 建立於 2019年11月5日

在 GitHub 查看
 (4 留言) (0 反應) (0 負責人)Haskell (1,953 star) (422 fork)batch import
bughelp wanted

描述

Hello, I've noticed that my Servant handler is incorrectly reading É as Ã. I've been able to isolate it to the handler, but no luck beyond that.

Mac: macOS Mojave - Version 10.14.6 Stack: Version 2.1.3, Git revision 0fa51b9925decd937e4a993ad90cb686f88fa282 (7739 commits) x86_64 hpack-0.31.2 GHC: The Glorious Glasgow Haskell Compilation System, version 8.4.3

When submitting the following request:

curl -i -X POST -H "Content-Type: text/plain; charset=utf-8" --data "{\"constraints\": [{\"column\": \"author\", \"values\": [\"CÉZANNE, Paul\"]}]}" http://localhost:8080/myEndpoint

... To the following Servant handler:

queryPaintings :: Pool Connection -> String -> Handler PaintingsResponse
queryPaintings conns constraintsInfo =
		...
      withResource conns $ \conn -> do
        _ <- putStrLn $ "constraintsInfo: " ++ constraintsInfo
        _ <- putStrLn "CÉZANNE, Paul"
		...

... Those putStrLn lines give:

constraintsInfo: {"constraints": [{"column": "author", "values": ["CÉZANNE, Paul"]}]}
CÉZANNE, Paul

Question:

Why, in the first line, do I have CÃZANNE instead of the desired CÉZANNE?

(I’ve alternatively tried having curl read a UTF-8 formatted text file — but same result.)

Many thanks in advance for your help.

貢獻者指南