2011-03-27 81 views
2

我有問題通過HTTP庫構造URI來發出http請求。Haskell.Network.URI.outside US-ASCII字符

例如:

import Network.URI

parseURI "http://мтс.рф" 

parseURI "http://maps.googleapis.com/maps/api/geocode/json?address=Титова+42&sensor=false" 

在兩種情況下,我有 「無」。 我沒有在文檔中找到解決方案

我試圖解碼/轉義非ASCII字符,但沒有幫助。

謝謝。

回答

1

第二種情況可以與UTF8串包來解決:

import Network.URI 
import Codec.Binary.UTF8.String 
uri = parseURI $ (escapeURIString isUnescapedInURI . encodeString) 
     "http://maps.googleapis.com/maps/api/geocode/json?address=Титова+42&sensor=false" 

main = print uri 

對於第一,從gnuidn包嘗試Data.Text.IDN.IDNA.toASCII。