diff --git a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/fcdoc/FCDocSegmentWriterCakeWord.java b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/fcdoc/FCDocSegmentWriterCakeWord.java index 572343f..da206a1 100644 --- a/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/fcdoc/FCDocSegmentWriterCakeWord.java +++ b/nx01-x4o-fc18/src/test/java/org/x4o/fc18/cake2/fcdoc/FCDocSegmentWriterCakeWord.java @@ -23,8 +23,11 @@ package org.x4o.fc18.cake2.fcdoc; import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.PrimitiveIterator; import org.x4o.fc18.cake2.FourCornerX00PetitVideCoinCarne; import org.x4o.fc18.cake2.FourCornerX06BaklavaPointSequence; @@ -92,6 +95,24 @@ public class FCDocSegmentWriterCakeWord implements FCDocSegmentWriter { } if (x21CodeDisplay.isPresent()) { writeSequence(writer, "Sequence-X21", 6, x21CodeDisplay.get().codePointSequence()); + StringBuilder bufUTF8 = new StringBuilder(); + x21CodeDisplay.get().codePointSequence().forEach(v -> bufUTF8.appendCodePoint(v)); + byte[] sequenceUTF8Bytes = bufUTF8.toString().getBytes(StandardCharsets.UTF_8); + List sequenceUTF8 = new ArrayList<>(); + for (int i = 0; i < sequenceUTF8Bytes.length; i++) { + sequenceUTF8.add(Byte.toUnsignedInt(sequenceUTF8Bytes[i])); + } + writeSequence(writer, "Sequence-X21-UTF8", 2, sequenceUTF8); + + StringBuilder bufXML = new StringBuilder(); + PrimitiveIterator.OfInt codePoints = bufUTF8.codePoints().iterator(); + while (codePoints.hasNext()) { + int codePoint = codePoints.nextInt(); + bufXML.append("&#x"); // manual & to show literal escape string + bufXML.append(Integer.toHexString(codePoint)); + bufXML.append(";"); + } + writer.docTableRow("Sequence-X21-XML", bufXML.toString()); } writer.docTableEnd(); // }