diff --git a/git_common.py b/git_common.py
index e022ff3..24c178c 100644
--- a/git_common.py
+++ b/git_common.py
@@ -605,7 +605,7 @@
   """
   with tempfile.TemporaryFile() as f:
     for name, (mode, typ, ref) in treedict.items():
-      f.write(('%s %s %s\t%s\0' % (mode, typ, ref, name)).encode())
+      f.write(('%s %s %s\t%s\0' % (mode, typ, ref, name)).encode('utf-8'))
     f.seek(0)
     return run('mktree', '-z', stdin=f)
 
@@ -862,7 +862,7 @@
     # nothing to commit at this point.
     print('Nothing to commit; squashed branch is empty')
     return False
-  run('commit', '--no-verify', '-a', '-F', '-', indata=log_msg.encode())
+  run('commit', '--no-verify', '-a', '-F', '-', indata=log_msg.encode('utf-8'))
   return True
 
 
diff --git a/tests/git_common_test.py b/tests/git_common_test.py
index 30ce8cd..e042463 100755
--- a/tests/git_common_test.py
+++ b/tests/git_common_test.py
@@ -1,4 +1,5 @@
 #!/usr/bin/env vpython3
+# coding=utf-8
 # Copyright 2013 The Chromium Authors. All rights reserved.
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
@@ -6,6 +7,7 @@
 """Unit tests for git_common.py"""
 
 from __future__ import print_function
+from __future__ import unicode_literals
 
 import binascii
 import collections
@@ -334,7 +336,8 @@
     ]
     self.assertEqual(ret, [binascii.unhexlify(h) for h in hashes])
 
-    with self.assertRaisesRegexp(Exception, r"one of \('master', 'bananas'\)"):
+    expected_re = r"one of \(u?'master', u?'bananas'\)"
+    with self.assertRaisesRegexp(Exception, expected_re):
       self.repo.run(self.gc.parse_commitrefs, 'master', 'bananas')
 
   def testRepoRoot(self):
@@ -399,8 +402,8 @@
   REPO_SCHEMA = ''
 
   def _intern_data(self, data):
-    with tempfile.TemporaryFile('w') as f:
-      f.write(data)
+    with tempfile.TemporaryFile('wb') as f:
+      f.write(data.encode('utf-8'))
       f.seek(0)
       return self.repo.run(self.gc.intern_f, f)
 
@@ -413,10 +416,10 @@
   def testMkTree(self):
     tree = {}
     for i in 1, 2, 3:
-      name = 'file%d' % i
+      name = '✔ file%d' % i
       tree[name] = ('100644', 'blob', self._intern_data(name))
     tree_hash = self.repo.run(self.gc.mktree, tree)
-    self.assertEqual('37b61866d6e061c4ba478e7eb525be7b5752737d', tree_hash)
+    self.assertEqual('b524c02ba0e1cf482f8eb08c3d63e97b8895c89c', tree_hash)
 
   def testConfig(self):
     self.repo.git('config', '--add', 'happy.derpies', 'food')
@@ -671,9 +674,9 @@
     self.repo.git('checkout', 'branch_K')
 
     self.assertEqual(
-        True, self.repo.run(self.gc.squash_current_branch, 'cool message'))
+        True, self.repo.run(self.gc.squash_current_branch, '✔ cool message'))
 
-    lines = ['cool message', '']
+    lines = ['✔ cool message', '']
     for l in 'HIJK':
       lines.extend((self.repo[l], l, ''))
     lines.pop()
