I ran into this too. These types of inconsistencies can be really quite maddening. The trick is to convert the values yourself. Here is a Java service I use to do this. Call it and assign the output to the desired delimiter field. Hope this helps.
Service: <YourTopFolder>.utils.x12.toChar
– Converts Java and Unicode character escape literals to their character equivalent.
– Various services may require the use of special characters that cannot normally be typed at the keyboard, such as a newline or carriage return. These characters can be supported through the use of escape sequences. These escape sequences are interpreted and converted to their character equivalent.
– The following escaped characters can be specified as the input variable and will be converted as described:
\b - Backspace
\t - Horizontal tab
\n - Newline
\f - Form feed
\r - Carriage return
\uXXXX - The Unicode character with encoding XXXX, where XXXX is four hexadecimal digits. For example, \u000a represents a newline character.
If the input variable unitCode contains any other values, the first character is returned. If unitCode is null or empty, the returned character is 0 (nul - not the character ‘0’).
Inputs:
unitCode - The string to be converted. The input string should contain only a single character or one of the above escape sequences.
Outputs:
char - A single character that represents the escape sequence specified in unitCode. If unitCode is not one of the above sequences, the first character in unitCode is returned. If unitCode is null or empty, a binary 0 is returned.
Imports:
java.util.Date
java.text.*
Code:
String unitCode = null;
char theChar = 0;
// pipeline
IDataHashCursor pipelineCursor = pipeline.getHashCursor();
if ( pipelineCursor.first( “unitCode” ) )
{
unitCode = (String) pipelineCursor.getValue();
}
pipelineCursor.destroy();
if(unitCode != null)
{
unitCode = unitCode.trim();
if(unitCode.length() > 0)
{
theChar = unitCode.charAt(0); // default to return 1st character
if(unitCode.charAt(0) == ‘\’)
{
if(unitCode.length() == 1)
{
theChar = ‘\’;
}
else if(unitCode.length() == 2)
{
switch(unitCode.charAt(1))
{
case ‘r’:
theChar = ‘\r’;
break;
case ‘n’:
theChar = ‘\n’;
break;
case ‘b’:
theChar = ‘\b’;
break;
case ‘t’:
theChar = ‘\t’;
break;
case ‘f’:
theChar = ‘\f’;
break;
}
}
else if((unitCode.charAt(1) == ‘u’) && (unitCode.length() >= 6))
{
theChar = (char) Integer.parseInt(unitCode.substring(2, 6), 16);
}
}
}
}
// pipeline
IDataHashCursor pipelineCursor_1 = pipeline.getHashCursor();
pipelineCursor_1.last(); <BR
#Integration-Server-and-ESB#edi#webMethods