Skip to content
This repository was archived by the owner on Oct 21, 2022. It is now read-only.
This repository was archived by the owner on Oct 21, 2022. It is now read-only.

remotes cannot receive (to clojure) some unicode characters in strings #12

@terjesb

Description

@terjesb

I was just bitten by this, which seems to be identical to pinot issue 16, ibdknox/pinot#16, reported by davesann. This is with latest available fetch/noir on Clojure 1.4.0, both OS X 10.7, OpenJDK 1.7 and Ubuntu 12.04, OpenJDK 1.7, and as far as I can tell everything is UTF-8.

It works fine retrieving a value like 'tésting' from the remote, but not posting the same.

There was also a discussion about read-string on the clojure list https://groups.google.com/forum/?fromgroups#!topic/clojure/Kl3WVtEE3FY, but I'm not sure if a fix there has been agreed upon yet. (The wiki page linked to there doesn't work for me right now.)

java.lang.RuntimeException: Unsupported escape character: \x
at clojure.lang.Util.runtimeException(Util.java:170)
at clojure.lang.LispReader$StringReader.invoke(LispReader.java:497)
at clojure.lang.LispReader.readDelimitedList(LispReader.java:1126)
at clojure.lang.LispReader$MapReader.invoke(LispReader.java:1069)
at clojure.lang.LispReader.readDelimitedList(LispReader.java:1126)
at clojure.lang.LispReader$VectorReader.invoke(LispReader.java:1061)
at clojure.lang.LispReader.read(LispReader.java:180)
at clojure.lang.RT.readString(RT.java:1707)
at clojure.core$read_string.invoke(core.clj:3361)
at noir.fetch.remotes$safe_read.invoke(remotes.clj:14)
at noir.fetch.remotes$ANY___fetch.invoke(remotes.clj:

I am currently investigating if davesann's proposed fix works for me:

(defn unescape [string]
  (s/replace 
    string #"\\x(..)" 
    (fn [m] (str (char (Integer/parseInt (second m) 16))))))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions