web-dev-qa-db-ja.com

このINSANEスペースキャラクターとは何ですか? (グーグルクローム)

これは絶対に私を駆り立てます!! &&%&$非常識...それは私が考えることができるすべてを無視します。

このキャラクターは... " "

これらの引用符の間に... google chromeを開いて検査します。_ ...普通ですか?ここで右クリックして、実際にこのスタックオーバーフローページのソースを表示します。通常のスペースです...(また、コピーした文字は実際のスペースでした)。

リッチテキストエディターのようなものか何かを理解できましたが、未加工のhtmlソースには通常のスペースがあります。

スペースキーを押すだけです(正常に動作します)... " "

それをコピーしてどこにでも貼り付けて大混乱を起こし、chrome put   どこにでも。クリップボードにコピーされたものは単なるスペースですが。

私はこれらの愚かなキャラクターが私のウェブサイトのどこにでもランダムに現れており、それらがどこから来たのか分かりません、またはなぜスペースをnbspに変換するのですか

私は実際の文字コードを調べてみましたが、見つけることができるすべてのものからの定期的なスペースです...

私が試みるすべての方法は、それを通常の空間として示しています...

Rubyを使用して" ".ord私は32。壊れたスペースでそれを行うと、32

私が私の心を失うことを助けてください。

編集:これを証明できます...このページでソースを表示すると、2つの空の" "通常のように。コンソールを見ると、1つだけが 、まだ生のソースは同一です。

chromeを使用していない人向けの画像(これはchrome devツールを介してこの投稿を見ています): enter image description here

これは、ソースを表示したときに表示される同じテキストのHTMLです。nbspは見つかりません。

enter image description here

27
Tallboy

一見同一の2つの空白文字が同じ文字ではないことがわかります。

見よ:

_var characters = ["a", "b", "c", "d", " "];

var typedSpace  = " ";
var copiedSpace = " ";

alert("Typed: " + characters.indexOf(typedSpace));   // -1
alert("Copied: " + characters.indexOf(copiedSpace)); // 4    
alert(typedSpace === copiedSpace);                   // false
_

JSFiddle

typedSpace.charCodeAt(0)は32、_ _クラシックスペースを返します。 copiedSpace.charCodeAt(0)は160を返しますが、_&#160_別名_ _文字。

2つの違いは、_ _の束が次々に繰り返されると、地面が保持され、それらの間に追加のスペースが作成されるのに対して、_ _の繰り返される文字の束は1つのスペースにまとめられることです。

例えば:

_A       B_の結果:A B

_A       B_の結果:A B

文字列で_ _文字を_ _文字に変換するには、これを試してください:

_.replace(new RegExp(String.fromCharCode(160),"g")," ");
_

これを文字コードに至るまで高レベルでデバッグしなければならなかった私のような将来の人々に、私はあなたに敬意を表します。

5
Charles Clayton

壊れないスペースです。  は、改行しないスペースを表すために使用されるエンティティです。これは基本的に標準のスペースであり、主な違いは、ブラウザがこの が占めるポイントでテキスト行を分割(またはラップ)しないことです。

ほとんどの場合、文字はHTMLエディターによって挿入されています。コンテキストでより具体的な例を挙げていただけますか?

2
TooltotheDeath

これは実際には質問に対する答えではなく、Webサイトのページのhtmlにあるこの特別な空白を検出するために使用できるツールであり、それを見つけて削除することができます。

基本的に行うツールは次のとおりです。

  1. URLのコンテンツを取得します
  2. HTMLコンテンツでchr(194).chr(160)の出現を探します
  3. オカレンスをより可視的なものに置き換えて強調表示します

これにより、スペースの場所を実際に把握し、ページを適切に編集して削除できます。

ツールのオンラインバージョンは次の場所にあります。

http://tools.heavydots.com/nbsp-space-char-detect/

作業例は、1つのオカレンスを含むこの質問のURLで見ることができます。

http://tools.heavydots.com/nbsp-space-char-detect/?url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F26962323%2Fwhat-is-this-insane-space-character -google-chrome&highlight = 1&hstring =%7BNBSP%7D

コードをローカルで実行したい場合は、Githubリポジトリが利用できます。
https://github.com/HeavyDots/nbsp-space-char-detect

ツールのページにコメントセクションがある場合は、フィードバックをお待ちしております。

2017年1月5日に更新

弊社のブログで、この迷惑な空白に関する面白い投稿を書きました。ぜひ立ち寄って読んでください! :-)

http://heavydots.com/blog/when-the-white-space-became-a-beast

前の回答で述べたように、これは改行なしスペース(nbsp)です。 Macでは、誤ってAlt + Spaceを押すと、この文字が挿入されます(ほとんどの場合、これは、特殊文字にAltを必要とするコードを入力するときに発生します(例:[(ドイツ語のキーボードレイアウト)。

このキーの組み合わせを通常のスペース文字に再マッピングするには、 Apple SE で提案されているようにデフォルトのキーバインドを変更できます

1
Frank Schmitt

空白の場合は、文字でもある「Alt + 0160」を押します。

0
Keyur Sureliya