diff --git a/briar-tests/src/org/briarproject/data/BdfReaderImplTest.java b/briar-tests/src/org/briarproject/data/BdfReaderImplTest.java
index f09665588807278e40d955ceb1625bac995c6bf1..4211ed0013b2cf04767aabad1b994f729a582968 100644
--- a/briar-tests/src/org/briarproject/data/BdfReaderImplTest.java
+++ b/briar-tests/src/org/briarproject/data/BdfReaderImplTest.java
@@ -273,6 +273,19 @@ public class BdfReaderImplTest extends BriarTestCase {
 		assertTrue(r.eof());
 	}
 
+	@Test
+	public void testReadUtf8String() throws Exception {
+		String str = "������ \uFDD0\uFDD1\uFDD2\uFDD3\uFDD1 ������";
+		String strHex = StringUtils.toHexString(str.getBytes("UTF-8"));
+		// STRING_8 tag, "foo", the empty string, and the test string
+		setContents("41" + "03" + "666F6F" + "41" + "00" +
+				"41" + "35" + strHex);
+		assertEquals("foo", r.readString(Integer.MAX_VALUE));
+		assertEquals("", r.readString(Integer.MAX_VALUE));
+		assertEquals(str, r.readString(Integer.MAX_VALUE));
+		assertTrue(r.eof());
+	}
+
 	@Test
 	public void testReadRaw8() throws Exception {
 		byte[] longest = new byte[Byte.MAX_VALUE];
diff --git a/briar-tests/src/org/briarproject/data/BdfWriterImplTest.java b/briar-tests/src/org/briarproject/data/BdfWriterImplTest.java
index 23fa9edec0590ad3b56ab4c472f54a2cd2306856..1d2b796461a88a3d2440056abb6eadc161f54de8 100644
--- a/briar-tests/src/org/briarproject/data/BdfWriterImplTest.java
+++ b/briar-tests/src/org/briarproject/data/BdfWriterImplTest.java
@@ -9,12 +9,11 @@ import org.junit.Test;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertArrayEquals;
 
 public class BdfWriterImplTest extends BriarTestCase {
 
@@ -113,6 +112,15 @@ public class BdfWriterImplTest extends BriarTestCase {
 		checkContents("44" + "00008000" + shortHex);
 	}
 
+	@Test
+	public void testWriteUtf8String() throws IOException {
+		String str = "������ \uFDD0\uFDD1\uFDD2\uFDD3\uFDD1 ������";
+		String strHex = StringUtils.toHexString(str.getBytes("UTF-8"));
+		w.writeString(str);
+		// STRING_8 tag, length 53, UTF-8 bytes
+		checkContents("41" + "35" + strHex);
+	}
+
 	@Test
 	public void testWriteBytes8() throws IOException {
 		byte[] longest = new byte[Byte.MAX_VALUE];
@@ -225,7 +233,7 @@ public class BdfWriterImplTest extends BriarTestCase {
 		out.flush();
 		out.close();
 		byte[] expected = StringUtils.fromHexString(hex);
-		assertTrue(StringUtils.toHexString(out.toByteArray()),
-				Arrays.equals(expected, out.toByteArray()));
+		assertArrayEquals(StringUtils.toHexString(out.toByteArray()),
+				expected, out.toByteArray());
 	}
 }