Unexpected text output

Certified Senior Developer

Can someone explain what's going on here? 

If I try to get the output for the following string: 

fn!char(65020) & " 21,245.00"

the result I get is: 

﷼ 21,245.00

however if I try to get the output for the following:
fn!char(65020) & "ABCD"
the result I get is: 
﷼ABCD
Can someone explain to me why it's essentially the same expression, but the symbol is on the right with the number and on the left with the letters?

  Discussion posts and replies are publicly visible

  • 0
    Certified Senior Developer

    Oooh, even weirder update. if I try this one: 

    fn!char(65020) & " 112abas "

    I end up with this:

    ﷼ 112abas

    with the symbol after the number but before the letters. Is this some weird formatting thing that I'm accidentally triggering? 
  • I think it has to do with the fn!char(65020) which is an Arabic symbol and as far as I know in the Arabish language they are writing/reading from right to left. Because if you try to get the char of another symbol i.e. fn!char(650) & " 21,245.00" this will give as result the "ʊ 21,245.00" or the fn!char(6502) & " 21,245.00" is giving "ᥦ 21,245.00" . As you can see, In both of them the symbol is in the correct position for us, the non-Arabish people :) 

    So, I guess the system is indicating the Arabish symbol and this is why is putting it on the right side for them :)

  • Hi   it was interesting for me. I did some experiment on this, observations are as follows.

    There are two governing factors causing this behavior. 1. Currency Sign and 2. Appian Function using for concatenation

    fn!char(65020) is displays the Arabic Currency Sign (Riyal Sign) using the unicode 65020 (which is for decimal).

    Since it was the sign for currency, it look for the number and displays according to the Arabic syntax i.e, from right to left

    Example:

    fn!char(65020) & " 21,245.00" returns "﷼ 21,245.00"
    "21,245.00 "& fn!char(65020)  returns "﷼ 21,245.00"
    concat(fn!char(65020)," ",5678 ) returns "﷼ 21245"

     

    In case of the alphanumeric, if the number is first(left to right) followed by text, it picks the number follows Arabic syntax i.e, from right to left and appends the remaining alphabets.

    Example: 

    concat(fn!char(65020)," 299dast") returns "﷼ 299dast"
    fn!char(65020) & "299dast" returns "﷼ 299dast"

    In case of the alphanumeric, if  alphabets are first(left to right) followed by number, it will treat the alphanumeric as text not as number. S0 it will display in the same format.

    Example:

    fn!char(65020) & "dast456" returns "﷼dast456"
    concat("dast456",fn!char(65020) ) returns "dast456﷼"
    concat(fn!char(65020)," dast456" ) returns "﷼ dast456"

    concat("456dast",fn!char(65020) ) returns "456dast﷼"

    Note: Thought the aphanumeric starts with number, due to concat() and the order, it returns "456dast﷼"

     

    Above observations can be noticed with any language specific currency sign.

    For example take the INR (India's currency sign). Syntax starts from left to right.

    fn!char(8377)&" 123" returns "₹ 123"
    fn!char(8377)&" 123dast" returns "₹ 123dast"
    fn!char(8377) & " 21,245.00" returns "₹ 21,245.00"
    "21,245.00 "& fn!char(8377) returns "21,245.00 ₹"
    concat(fn!char(8377)," ",21245.00 ) returns "₹ 21245"
    concat(fn!char(8377)," 299dast") returns "₹ 299dast"
    fn!char(8377) & "299dast" returns "₹299dast"

    fn!char(8377) & "dast456" returns "₹dast456"
    concat("dast456",fn!char(8377) ) returns "dast456₹"
    concat(fn!char(8377)," dast456" ) returns "₹ dast456"

  • As the pattern suggests, the language that you're trying to use doesn't work from left to right. Rather it depends on the character. 
    All the numbers are left aligned. All the text is right-aligned to the language.