搜索 | 用户支持

防范以用户支持为名的诈骗。我们绝对不会要求您拨打电话或发送短信,及提供任何个人信息。请使用“举报滥用”选项报告涉及违规的行为。

详细了解

Firexox console display issue with unicode char \u00AD

  • 6 个回答
  • 1 人有此问题
  • 1 次查看
  • 最后回复者为 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

所有回复 (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

选择的解决方案

more options

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