diff --git a/tensorboard/java/org/tensorflow/tensorboard/vulcanize/Vulcanize.java b/tensorboard/java/org/tensorflow/tensorboard/vulcanize/Vulcanize.java
index <HASH>..<HASH> 100644
--- a/tensorboard/java/org/tensorflow/tensorboard/vulcanize/Vulcanize.java
+++ b/tensorboard/java/org/tensorflow/tensorboard/vulcanize/Vulcanize.java
@@ -740,7 +740,7 @@ public final class Vulcanize {
   }
 
   private static ArrayList<String> computeScriptShasum(Document document) throws IOException {
-    ArrayList hashes = new ArrayList<String>();
+    ArrayList<String> hashes = new ArrayList<>();
     for (Element script : document.getElementsByTag("script")) {
       String src = script.attr("src");
       String sourceContent;
@@ -751,7 +751,7 @@ public final class Vulcanize {
         // that appear inside descendant of a node annotated with `vulcanize-noinline`.  They must
         // resolve from the root because those srcs are rootified.
         Webpath path = Webpath.get("/").resolve(Webpath.get(src)).normalize();
-        sourceContent = new String(Files.readAllBytes(webfiles.get(path)));
+        sourceContent = new String(Files.readAllBytes(webfiles.get(path)), UTF_8);
       }
       String hash = Hashing.sha256().hashString(sourceContent, UTF_8).toString();
       hashes.add(hash);
cleanup: miscellaneous improvements to Vulcanize (#<I>)

* cleanup: better ArrayList typedef on Vulcanize

     Internal javac complains about untyped ArrayList which seems to

     be inferrable from its assignment.

* java: add explicit charset when reading file