diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
index 0159b25..f2ff42c 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
@@ -361,7 +361,7 @@
         // the application will not be able to run.
         for(SourceFile closureSourceFile : closureSourceFiles) {
             FileUtils.write(new File(new File(intermediateDir, "library/closure"),
-                    closureSourceFile.getName()), closureSourceFile.getCode());
+                    closureSourceFile.getName()), closureSourceFile.getCode(), Charset.forName("utf8"));
         }
         closureSourceFiles = closureFilesInOrder(intermediateDir + "/library/closure/", closureSourceFiles, "goog.events.EventTarget");
 
@@ -649,7 +649,7 @@
         List<String> fileLines;
         try
         {
-            fileLines = Files.readLines(new File(filePath), Charset.defaultCharset());
+            fileLines = Files.readLines(new File(filePath), Charset.forName("utf8"));
         }
         catch(IOException e)
         {
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
index cf87fba..5f2817e 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
@@ -546,7 +546,7 @@
         List<String> fileLines;
 		try {
 			File mainFile = new File(main.filePath);
-			fileLines = Files.readLines(mainFile, Charset.defaultCharset());
+			fileLines = Files.readLines(mainFile, Charset.forName("utf8"));
 
 			SourceMapConsumerV3 sourceMapConsumer = null;
 			File sourceMapFile = null;
@@ -555,7 +555,7 @@
 				sourceMapFile = new File(main.filePath + ".map");
 				if (sourceMapFile.exists())
 				{
-					String sourceMapContents = FileUtils.readFileToString(sourceMapFile);
+					String sourceMapContents = FileUtils.readFileToString(sourceMapFile, Charset.forName("utf8"));
 					sourceMapConsumer = new SourceMapConsumerV3();
 					try
 					{
@@ -643,7 +643,7 @@
 		depMap.put(gd.className, gd);
         List<String> fileLines;
 		try {
-			fileLines = Files.readLines(new File(gd.filePath), Charset.defaultCharset());
+			fileLines = Files.readLines(new File(gd.filePath), Charset.forName("utf8"));
             FileInfo fi = getFileInfo(fileLines, className);
 			gd.fileInfo = fi;
 		} catch (IOException e) {
@@ -694,7 +694,7 @@
         {
 			gd = depMap.get(className);
 			File depFile = new File(gd.filePath);
-            List<String> fileLines = Files.readLines(depFile, Charset.defaultCharset());
+            List<String> fileLines = Files.readLines(depFile, Charset.forName("utf8"));
 			ArrayList<String> finalLines = new ArrayList<String>();
 			
 			SourceMapConsumerV3 sourceMapConsumer = null;
@@ -704,7 +704,7 @@
 				sourceMapFile = new File(gd.filePath + ".map");
 				if (sourceMapFile.exists())
 				{
-					String sourceMapContents = FileUtils.readFileToString(sourceMapFile);
+					String sourceMapContents = FileUtils.readFileToString(sourceMapFile, Charset.forName("utf8"));
 					sourceMapConsumer = new SourceMapConsumerV3();
 					try
 					{
