summaryrefslogtreecommitdiff
path: root/src/jvm/clojure
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-08-07 12:11:11 +0000
committerRich Hickey <richhickey@gmail.com>2008-08-07 12:11:11 +0000
commit158698c6ad3a95b52a3120be1bcdd381bc8750d5 (patch)
treed2d30985b0bcd0d73b96cf697b84f14165a5c02f /src/jvm/clojure
parent24118f2aca814de17946573930d174684a760ee8 (diff)
made UTF-8 default encoding on iostreams *in*, *out*, and in loadFile and loadResource, from cemerick
Diffstat (limited to 'src/jvm/clojure')
-rw-r--r--src/jvm/clojure/lang/Compiler.java2
-rw-r--r--src/jvm/clojure/lang/RT.java9
-rw-r--r--src/jvm/clojure/lang/Repl.java2
3 files changed, 8 insertions, 5 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java
index 320e9060..7da12352 100644
--- a/src/jvm/clojure/lang/Compiler.java
+++ b/src/jvm/clojure/lang/Compiler.java
@@ -4100,7 +4100,7 @@ public static Object loadFile(String file) throws Exception{
FileInputStream f = new FileInputStream(file);
try
{
- return load(new InputStreamReader(f), new File(file).getAbsolutePath(), (new File(file)).getName());
+ return load(new InputStreamReader(f,RT.UTF8), new File(file).getAbsolutePath(), (new File(file)).getName());
}
finally
{
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java
index 18a9521e..1c35944b 100644
--- a/src/jvm/clojure/lang/RT.java
+++ b/src/jvm/clojure/lang/RT.java
@@ -23,6 +23,7 @@ import java.math.BigInteger;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.net.URL;
+import java.nio.charset.Charset;
public class RT{
@@ -160,14 +161,16 @@ Symbol.create("SuppressWarnings"), SuppressWarnings.class
// Symbol.create("SortedSet"), "java.util.SortedSet"
);
+// single instance of UTF-8 Charset, so as to avoid catching UnsupportedCharsetExceptions everywhere
+static public Charset UTF8 = Charset.forName("UTF-8");
static public final Namespace CLOJURE_NS = Namespace.findOrCreate(Symbol.create("clojure"));
//static final Namespace USER_NS = Namespace.findOrCreate(Symbol.create("user"));
final static public Var OUT =
- Var.intern(CLOJURE_NS, Symbol.create("*out*"), new OutputStreamWriter(System.out));
+ Var.intern(CLOJURE_NS, Symbol.create("*out*"), new OutputStreamWriter(System.out,UTF8));
final static public Var IN =
Var.intern(CLOJURE_NS, Symbol.create("*in*"),
- new LineNumberingPushbackReader(new InputStreamReader(System.in)));
+ new LineNumberingPushbackReader(new InputStreamReader(System.in,UTF8)));
final static Keyword TAG_KEY = Keyword.intern(null, "tag");
final static public Var AGENT = Var.intern(CLOJURE_NS, Symbol.create("*agent*"), null);
final static public Var MACRO_META = Var.intern(CLOJURE_NS, Symbol.create("*macro-meta*"), null);
@@ -350,7 +353,7 @@ public static void loadResourceScript(Class c, String name, boolean failIfNotFou
InputStream ins = c.getResourceAsStream("/" + name);
if(ins != null)
{
- Compiler.load(new InputStreamReader(ins), name, file);
+ Compiler.load(new InputStreamReader(ins,UTF8), name, file);
ins.close();
}
else if(failIfNotFound)
diff --git a/src/jvm/clojure/lang/Repl.java b/src/jvm/clojure/lang/Repl.java
index 4c15be13..c91ed4b3 100644
--- a/src/jvm/clojure/lang/Repl.java
+++ b/src/jvm/clojure/lang/Repl.java
@@ -53,7 +53,7 @@ public static void main(String[] args) throws Exception{
}
//repl IO support
- LineNumberingPushbackReader rdr = new LineNumberingPushbackReader(new InputStreamReader(System.in));
+ LineNumberingPushbackReader rdr = new LineNumberingPushbackReader(new InputStreamReader(System.in,RT.UTF8));
OutputStreamWriter w = (OutputStreamWriter) RT.OUT.get();//new OutputStreamWriter(System.out);
Object EOF = new Object();