We're calling on all EU-based Mozillians with iOS or iPadOS devices to help us monitor Apple’s new browser choice screens. Join the effort to hold Big Tech to account!

Vanwege onderhoudswerkzaamheden die uw ervaring zouden moeten verbeteren, heeft deze website beperkte functionaliteit. Als een artikel uw probleem niet verhelpt en u een vraag wilt stellen, kan onze ondersteuningsgemeenschap u helpen in @FirefoxSupport op Twitter en /r/firefox op Reddit.

Zoeken in Support

Vermijd ondersteuningsscams. We zullen u nooit vragen een telefoonnummer te bellen, er een sms naar te sturen of persoonlijke gegevens te delen. Meld verdachte activiteit met de optie ‘Misbruik melden’.

Meer info

Deze conversatie is gearchiveerd. Stel een nieuwe vraag als u hulp nodig hebt.

Firexox console display issue with unicode char \u00AD

  • 6 antwoorden
  • 1 heeft dit probleem
  • 1 weergave
  • Laatste antwoord van 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

Alle antwoorden (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

Gekozen oplossing

more options

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