diff --git a/src/java/org/apache/sqoop/avro/AvroUtil.java b/src/java/org/apache/sqoop/avro/AvroUtil.java
index ee29f14..8d90130 100644
--- a/src/java/org/apache/sqoop/avro/AvroUtil.java
+++ b/src/java/org/apache/sqoop/avro/AvroUtil.java
@@ -28,6 +28,7 @@
 import org.apache.avro.generic.GenericRecord;
 import org.apache.avro.io.DatumReader;
 import org.apache.avro.mapred.FsInput;
+import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
@@ -106,7 +107,10 @@
    * Convert Column name into Avro column name.
    */
   public static String toAvroColumn(String column) {
-    String candidate = ClassWriter.toJavaIdentifier(column);
+    // We're unescaping identifiers to get the real Unicode characters
+    // back, and not the escaped versions.
+    String candidate = StringEscapeUtils.unescapeJava(
+        ClassWriter.toJavaIdentifier(column));
     return toAvroIdentifier(candidate);
   }
 
diff --git a/src/java/org/apache/sqoop/orm/AvroSchemaGenerator.java b/src/java/org/apache/sqoop/orm/AvroSchemaGenerator.java
index 3c31c43..5b1c745 100644
--- a/src/java/org/apache/sqoop/orm/AvroSchemaGenerator.java
+++ b/src/java/org/apache/sqoop/orm/AvroSchemaGenerator.java
@@ -29,6 +29,7 @@
 import org.apache.avro.Schema;
 import org.apache.avro.Schema.Field;
 import org.apache.avro.Schema.Type;
+import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
@@ -88,7 +89,9 @@
 
     List<Field> fields = new ArrayList<Field>();
     for (String columnName : columnNames) {
-      String cleanedCol = AvroUtil.toAvroIdentifier(ClassWriter.toJavaIdentifier(columnName));
+      // We're unescaping identifiers to get the real Unicode characters
+      // back, and not the escaped versions.
+      String cleanedCol = AvroUtil.toAvroIdentifier(StringEscapeUtils.unescapeJava(ClassWriter.toJavaIdentifier(columnName)));
       List<Integer> columnInfoList = columnInfo.get(columnName);
       int sqlType = columnInfoList.get(0);
       Integer precision = columnInfoList.get(1);
diff --git a/src/java/org/apache/sqoop/orm/ClassWriter.java b/src/java/org/apache/sqoop/orm/ClassWriter.java
index 6f6e66b..0c8d86d 100644
--- a/src/java/org/apache/sqoop/orm/ClassWriter.java
+++ b/src/java/org/apache/sqoop/orm/ClassWriter.java
@@ -284,7 +284,16 @@
       return "_" + output;
     }
 
-    return output;
+    // Calling StringEscapeUtils#escapeJava is required because we'd like to
+    // support Unicode characters in identifiers even if the locale of the host
+    // system is not supporting UTF-8, or by any reason the locale is different
+    // from that. Good example: if a column name would contain a \uC3A1 char
+    // in it's name, though the locale would not support Unicode characters
+    // then the generated java file would contain unrecognizable characters
+    // for the compiler, and javac would fail with a compile error. If the name
+    // of the column would be Alm\uC3A1a then it would be Alm\uC3A1a after the
+    // escaping, and this every places where it's used/
+    return StringEscapeUtils.escapeJava(output);
   }
 
   private String toJavaType(String columnName, int sqlType) {
