diff --git a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/cpp/CppGenerator.java b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/cpp/CppGenerator.java index 506b5d8ea3..595f46c380 100755 --- a/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/cpp/CppGenerator.java +++ b/sbe-tool/src/main/java/uk/co/real_logic/sbe/generation/cpp/CppGenerator.java @@ -2532,7 +2532,12 @@ private CharSequence writeTokenDisplay( // have to duplicate because of checkstyle :/ if (typeToken.encoding().primitiveType() == PrimitiveType.CHAR) { - sb.append(indent + "builder << '\"' << (char)" + fieldName + "() << '\"';\n"); + sb.append( + indent + "if (std::isprint(" + fieldName + "())) {\n" + + indent + " builder << '\"' << (char)" + fieldName + "() << '\"';\n" + + indent + "} else {\n" + + indent + " builder << (int)" + fieldName + "();\n" + + indent + "}\n"); } else {