【问题标题】:How to uri-encode unicode strings in Racket如何在 Racket 中对 unicode 字符串进行 uri 编码
【发布时间】:2013-10-08 10:01:25
【问题描述】:

下面的代码给了我一个错误:

(uri-encode "Kidô senkan Nadeshiko")

也就是说,

vector-ref: index is out of range
  index: 244
  valid range: [0, 127]
  vector: '#("%00" "%01" "%02" "%03" "%04" "%05" "%06" "%07" "%08" "%09" "%0A" "%0B" "%0C" "%0D" "%0E" "%0F" "%10" "%11" "%12" "%13" "%...
  context...:
   /usr/lib/racket/collects/net/uri-codec.rkt:197:6: for-loop
   /usr/lib/racket/collects/net/uri-codec.rkt:195:0: encode
   /usr/lib/racket/collects/racket/private/misc.rkt:87:7

我猜uri-encodeuri-decode 只支持 ASCII,我可以从一些测试的源代码中推断出来,here

所以我的问题是,在 github 或其他地方是否有一个库可以正确编码 unicode 字符串?还是我必须自己动手?

【问题讨论】:

    标签: string unicode encoding uri racket


    【解决方案1】:

    这可能与您运行程序的方式或使用的 Racket 版本有关。我在 Racket 5.2.1 中对此进行了测试,它对我有用:

    #lang racket
    (require net/uri-codec)
    
    (uri-encode "Kidô senkan Nadeshiko")
    => "Kid%C3%B4%20senkan%20Nadeshiko"
    

    【讨论】:

    • 好的,是的,它适用于我在 Racket 5.3.4 下,但这个错误发生在 5.3.4.10 下,所以我猜这是一个错误?
    • @Wes 看来,最好填写错误报告;)
    猜你喜欢
    • 2011-06-24
    • 2011-03-14
    • 2014-04-16
    • 2013-10-21
    • 2014-03-27
    • 2011-10-06
    • 2012-12-23
    • 1970-01-01
    • 2011-06-11
    相关资源
    最近更新 更多