diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/SystemTools.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/SystemTools.java
index c200d4c..b83b010 100644
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/SystemTools.java
+++ b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/SystemTools.java
@@ -60,6 +60,28 @@
 	}
 
 
+	// ********** file encoding **********
+
+	/**
+	 * Return whether the current file encoding is Microsoft Windows
+	 * (i.e. "Cp1252").
+	 */
+	public static boolean fileEncodingIsWindows() {
+		return fileEncoding().equals("Cp1252");
+	}
+
+	/**
+	 * Return whether the current file encoding is UTF-8.
+	 */
+	public static boolean fileEncodingIsUTF8() {
+		return fileEncoding().equals("UTF-8");
+	}
+
+	private static String fileEncoding() {
+		return System.getProperty("file.encoding");
+	}
+
+
 	// ********** O/S **********
 
 	/**
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/ByteArrayToolsTests.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/ByteArrayToolsTests.java
index 71ace40..1f44b51 100644
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/ByteArrayToolsTests.java
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/ByteArrayToolsTests.java
@@ -9,8 +9,8 @@
  ******************************************************************************/
 package org.eclipse.jpt.common.utility.tests.internal;
 
-import java.util.Arrays;
 import junit.framework.TestCase;
+
 import org.eclipse.jpt.common.utility.internal.ByteArrayTools;
 
 @SuppressWarnings("nls")
@@ -30,16 +30,20 @@
 
 	public void testConvertToHexString_negative() throws Exception {
 		String s = "caf\u00E9"; // cafe'
-		assertEquals("636166E9", ByteArrayTools.convertToHexString(s.getBytes())); // UTF-8 values
+		assertEquals(this.getHexCafe(), ByteArrayTools.convertToHexString(s.getBytes()));
 	}
 
 	public void testConvertToHexCharArray() throws Exception {
 		String s = "test";
-		assertTrue(Arrays.equals("74657374".toCharArray(), ByteArrayTools.convertToHexCharArray(s.getBytes()))); // UTF-8 values
+		TestTools.assertEquals("74657374", ByteArrayTools.convertToHexCharArray(s.getBytes()));
 	}
 
 	public void testConvertToHexCharArray_negative() throws Exception {
 		String s = "caf\u00E9"; // cafe'
-		assertTrue(Arrays.equals("636166E9".toCharArray(), ByteArrayTools.convertToHexCharArray(s.getBytes()))); // UTF-8 values
+		TestTools.assertEquals(this.getHexCafe(), ByteArrayTools.convertToHexCharArray(s.getBytes()));
+	}
+
+	private String getHexCafe() {
+		return StringToolsTests.getHexCafe();
 	}
 }
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/CharArrayToolsTests.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/CharArrayToolsTests.java
index 38f9efc..6d15439 100644
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/CharArrayToolsTests.java
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/CharArrayToolsTests.java
@@ -271,17 +271,21 @@
 
 	public void testConvertHexStringToByteArray_ok() throws Exception {
 		String s = "74657374"; // UTF-8 values
-		assertEquals("test", new String(CharArrayTools.convertHexStringToByteArray(s.toCharArray())));
+		TestTools.assertEquals("test", CharArrayTools.convertHexStringToByteArray(s.toCharArray()));
 	}
 
 	public void testConvertHexStringToByteArray_negative() throws Exception {
-		String s = "636166E9"; // UTF-8 values
-		assertEquals("caf\u00E9", new String(CharArrayTools.convertHexStringToByteArray(s.toCharArray())));
+		String s = this.getHexCafe();
+		TestTools.assertEquals("caf\u00E9", CharArrayTools.convertHexStringToByteArray(s.toCharArray()));
 	}
 
 	public void testConvertHexStringToByteArray_lowercase() throws Exception {
-		String s = "636166e9"; // UTF-8 values
-		assertEquals("caf\u00E9", new String(CharArrayTools.convertHexStringToByteArray(s.toCharArray())));
+		String s = this.getHexCafe().toLowerCase();
+		TestTools.assertEquals("caf\u00E9", CharArrayTools.convertHexStringToByteArray(s.toCharArray()));
+	}
+
+	private String getHexCafe() {
+		return StringToolsTests.getHexCafe();
 	}
 
 	// ********** convert camel-case to all-caps **********
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringBufferToolsTests.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringBufferToolsTests.java
index 476ae7e..c2c1d9b 100644
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringBufferToolsTests.java
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringBufferToolsTests.java
@@ -286,7 +286,11 @@
 	}
 
 	public void testConvertToHexString_negative() {
-		this.verifyConvertToHexString("636166E9", "caf\u00E9"); // UTF-8 values
+		this.verifyConvertToHexString(this.getHexCafe(), "caf\u00E9"); // UTF-8 values
+	}
+
+	private String getHexCafe() {
+		return StringToolsTests.getHexCafe();
 	}
 
 	private void verifyConvertToHexString(String expected, String string) {
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringBuilderToolsTests.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringBuilderToolsTests.java
index 66dea42..4a8eb42 100644
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringBuilderToolsTests.java
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringBuilderToolsTests.java
@@ -286,7 +286,11 @@
 	}
 
 	public void testConvertToHexString_negative() {
-		this.verifyConvertToHexString("636166E9", "caf\u00E9"); // UTF-8 values
+		this.verifyConvertToHexString(this.getHexCafe(), "caf\u00E9"); // UTF-8 values
+	}
+
+	private String getHexCafe() {
+		return StringToolsTests.getHexCafe();
 	}
 
 	private void verifyConvertToHexString(String expected, String string) {
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringToolsTests.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringToolsTests.java
index 195e081..1f12085 100644
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringToolsTests.java
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/StringToolsTests.java
@@ -14,6 +14,7 @@
 import org.eclipse.jpt.common.utility.internal.ByteArrayTools;
 import org.eclipse.jpt.common.utility.internal.ObjectTools;
 import org.eclipse.jpt.common.utility.internal.StringTools;
+import org.eclipse.jpt.common.utility.internal.SystemTools;
 
 @SuppressWarnings("nls")
 public class StringToolsTests
@@ -318,15 +319,25 @@
 	}
 
 	public void testConvertHexStringToByteArray_negative() throws Exception {
-		String s = "636166E9"; // UTF-8 values
+		String s = getHexCafe();
 		assertEquals("caf\u00E9", new String(StringTools.convertHexStringToByteArray(s)));
 	}
 
 	public void testConvertHexStringToByteArray_lowercase() throws Exception {
-		String s = "636166e9"; // UTF-8 values
+		String s = getHexCafe().toLowerCase();
 		assertEquals("caf\u00E9", new String(StringTools.convertHexStringToByteArray(s)));
 	}
 
+	public static String getHexCafe() {
+		if (SystemTools.fileEncodingIsWindows()) {
+			return "636166E9";
+		}
+		if (SystemTools.fileEncodingIsUTF8()) {
+			return "636166C3A9";
+		}
+		return null;
+	}
+
 	// ********** convert camel-case to all-caps **********
 
 	public void testConvertCamelCaseToAllCaps() {
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/TestTools.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/TestTools.java
index 94cec63..baa8e16 100644
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/TestTools.java
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/TestTools.java
@@ -107,6 +107,14 @@
 	}
 
 	/**
+	 * Check whether the specified byte array contains the same characters as
+	 * the expected string. Throw an exception if they do not.
+	 */
+	public static void assertEquals(String expected, byte[] actual) {
+		Assert.assertEquals(expected, (actual == null) ? null : new String(actual));
+	}
+
+	/**
 	 * Test an object's implementation of {@link Serializable} by serializing the
 	 * specified object to a byte array; then de-serializing the byte array and
 	 * returning the resultant object.
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/io/WriterToolsTests.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/io/WriterToolsTests.java
index bcc2a8a..a074f54 100644
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/io/WriterToolsTests.java
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/io/WriterToolsTests.java
@@ -13,6 +13,7 @@
 import java.io.Writer;
 import junit.framework.TestCase;
 import org.eclipse.jpt.common.utility.internal.io.WriterTools;
+import org.eclipse.jpt.common.utility.tests.internal.StringToolsTests;
 
 @SuppressWarnings("nls")
 public class WriterToolsTests
@@ -288,7 +289,11 @@
 	}
 
 	public void testConvertToHexString_negative() throws Exception {
-		this.verifyConvertToHexString("636166E9", "caf\u00E9"); // UTF-8 values
+		this.verifyConvertToHexString(this.getHexCafe(), "caf\u00E9"); // UTF-8 values
+	}
+
+	private String getHexCafe() {
+		return StringToolsTests.getHexCafe();
 	}
 
 	private void verifyConvertToHexString(String expected, String string) throws Exception {
