private String cleanFact(String catfact) {
		StringBuilder sb = new StringBuilder();
		boolean escaping = false;
		boolean unicodeSeq = false;
		char[] unicodeDigits = new char[4];
		int unicodeSeqCount = 0;
		for (int i = 0; i < catfact.length(); i++) {
			char c = catfact.charAt(i);
			if (!escaping) {
				if (c == '\\') {
					escaping = true;
				} else {
					sb.append(c);
				}
			} else {
				if (unicodeSeq) {
					if (unicodeSeqCount < 4) {
						unicodeDigits[unicodeSeqCount] = c;
						unicodeSeqCount++;
					} else {
						char uni = translateUnicodeSequence(unicodeDigits);
						sb.append(uni);
						unicodeSeq = false;
						escaping = false;
					}
				} else {
					escaping = false;
					if (c == 'u') {
						escaping = true;
						unicodeSeq = true;
						unicodeSeqCount = 0;
					} else if (c == '\\') {
						sb.append(c);
					} else if (c == '"') {
						sb.append(c);
					}
				}
			}
		}
		return sb.toString();
	}