Это мой код:Поддерживает ли Splice Unicode?
testSplice :: C.Splice Handler
testSplice = return $ C.yieldRuntimeText $ do
return "中文"
И я привязать его к тегу:
splices :: Splices (C.Splice Handler)
splices =
"testSplice" ## testSplice
И использовали его на layout.tpl:
<meta charset="UTF-8">
<testSplice/>
И выход в браузере is
-�
Что я сделал не так?
Извините за задержку, я был занят на некоторое время, и теперь я вернусь, и я думаю, что не может сделать вопрос достаточно конкретно @mightybyte Вот код, где возникает проблема, я надеюсь, это сделало бы вопрос более спецификатор:
test.hs:
{-# LANGUAGE OverloadedStrings #-}
import Snap
import Heist
import qualified Heist.Compiled as C
import Data.Monoid
import Control.Monad.Trans.Either
import Data.Maybe
main :: IO()
main = quickHttpServe site
site :: Snap()
site =
route [("/", testSnap)]
testSnap :: Snap()
testSnap = do
hs <- liftIO $ load "template" splices
let runtime = fromJust $ C.renderTemplate hs "test"
builder <-liftIO (fst runtime)
writeBuilder builder
where
splices :: Splices (C.Splice IO)
splices =
"testSplice" ## testSplice
load :: MonadIO n
=> FilePath
-> Splices (C.Splice n)
-> IO (HeistState n)
load baseDir splices = do
tmap <- runEitherT $ do
let t = loadTemplates baseDir
hc = HeistConfig
defaultInterpretedSplices
defaultLoadTimeSplices
splices
mempty
[t]
initHeist hc
either (error . concat) return tmap
testSplice :: C.Splice IO
testSplice = return $ C.yieldRuntimeText $ do return "中文"
шаблон/test.tpl
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<testSplice/>
</body>
</html>
Теперь я пробовал heist-0.13.0.2, и теперь он отлично работает, отличная работа Daniel!
Возможно, вам следует предоставить ссылку на источник этой библиотеки. Я не слышал об этом и не могу найти его через hoogle/google. – jtobin
Heist поддерживает Unicode. См. [Мой ответ здесь] (http: // stackoverflow.com/questions/18931786/how-to-show-utf8-text-with-snap-and-heist/18965748 # 18965748) для более подробной информации. – mightybyte
@mightybyte Но doesn't yieldRuntimeText использовать fromText, который исходит от Blaze.ByteString.Builder.Char8? Извините, если я ошибаюсь, я отвечу на этот вопрос. – danidiaz