This site will have limited functionality while we undergo maintenance to improve your experience. If an article doesn't solve your issue and you want to ask a question, we have our support community waiting to help you at @FirefoxSupport on Twitter and/r/firefox on Reddit.

Cari Bantuan

Avoid support scams. We will never ask you to call or text a phone number or share personal information. Please report suspicious activity using the “Report Abuse” option.

Pelajari Lebih Lanjut

Firexox console display issue with unicode char \u00AD

  • 6 balas
  • 1 memiliki masalah ini
  • 1 kunjungan
  • Balasan terakhir oleh yellowSpasm

more options

I wrote a javascript function that takes this string of 40 hex characters : "13DE01B7AD467D756FBA1EA816866E32416A269D". It converts every pair of hex chars "13", "DE" to their string counterparts: "?", "Þ", "?", "·­", [--0x00AD--] ,"F", "}", "u", "o", "º", "?", "¨", "?", "†", "n", "2", "A", "j" , "&", "". and prints them on firefox console using console.log() ... In firefox settings im using default font that is unicode compatible. So every char (converted from pair of hex chars), may it be printable or unprintable, has graphical representation that I can see. Except the char with hex "AD" that is 0x00AD, or decimal 173. That char is "soft hyphen" it should look like short minus sign.

The bug is that DONT SEE the  soft hyphen char displayed in console, when there is enough space between the string in which that char resides when printed and end of console element's space, but i DO SEE IT ONLY when that char is the LAST ONE in printed line on console before browser applyes a line break. 

I picture1 you can see the above mentioned string of converted hex chars when they have ENOUGH SPACE, and in picture2 you see how IT IS rendered (DISPLAYED) when it is the last one before browser applies line break. You should see soft hyphen before the "F" character

picture1(no soft hyphen): https://ibb.co/fxAD6Q picture2(soft hyphen is there): https://ibb.co/etaD6Q

I wrote a javascript function that takes this string of 40 hex characters : "13DE01B7AD467D756FBA1EA816866E32416A269D". It converts every pair of hex chars "13", "DE" to their string counterparts: "", "Þ", "", "·­", [--0x00AD--] ,"F", "}", "u", "o", "º", "", "¨", "", "†", "n", "2", "A", "j" , "&", "". and prints them on firefox console using console.log() ... In firefox settings im using default font that is unicode compatible. So every char (converted from pair of hex chars), may it be printable or unprintable, has graphical representation that I can see. Except the char with hex "AD" that is 0x00AD, or decimal 173. That char is "soft hyphen" it should look like short minus sign. The bug is that DONT SEE the soft hyphen char displayed in console, when there is enough space between the string in which that char resides when printed and end of console element's space, but i DO SEE IT ONLY when that char is the LAST ONE in printed line on console before browser applyes a line break. I picture1 you can see the above mentioned string of converted hex chars when they have ENOUGH SPACE, and in picture2 you see how IT IS rendered (DISPLAYED) when it is the last one before browser applies line break. You should see soft hyphen before the "F" character picture1(no soft hyphen): https://ibb.co/fxAD6Q picture2(soft hyphen is there): https://ibb.co/etaD6Q

Semua Balasan (6)

more options

Then why not replace these non printable characters?

s="13DE01B7AD467D756FBA1EA816866E32416A269D";
t=[];for(i=0;s[i];i+=2){t.push("%"+s.substr(i,2).replace(/AD/i,"-"))}
x=unescape(t.join(""));
console.log(t,x);
more options

Yes, i know how to replace characters. It's just that I'm writing a HMAC_SHA1 function that at some point the code spits out string of character like above explained, in order for me to troubleshoot working of function itself by being able to copy-paste characters from console and then use the clipboard to insert the string on sites like this one: https://caligatio.github.io/jsSHA

What I think is that above behavior is a bug, it can't be that printable character like \u00AD is sometimes displayed in console and sometimes is not, and that it depends on (how it seems) on location of that char, that is on a line break of a browser ( or width of the console window). That is ridiculous. What is more amazing is that this bug is cross browser issue. Strange...

Can you share any information or why this behaviour exists and what might be the cause of it?! Thx for your help and your time.

more options

Also, your solution adds a ASCII char with hex 0x39 that is just ascii. And I whould like to copy/paste exact representation of characters in string that HMAC_SHA1 that im trying to write returns. I can go around it, but Im curious about this weird appearing of "soft hyphen char".

more options

The 'shy' character isn't displayed, but is there if I copy the text to the clipboard.

?Þ?·­F}uoº?¨?†n2Aj&

Þ·­F}uoº ¨†n2Aj&

more options

Solusi Terpilih

more options

Thnx cor-el! It's behaviour is like that because thats the sole purpose of soft hyphen. :) Not a bug, for sure.