개발/JavaScript

javascript | non-breaking space (char code 160)

AM0530 2021. 11. 25. 19:00

1. 이슈

웹 페이지의 text를 복사 후, IDE (Eclipse, Visual Studio Code 등)에 복사하면 코드 문법이 맞지 않는다는 알림이 뜸 

 ex. colon expectedcss(css-colonexpected)

2. 원인 

chrome 브라우저에서 space를 복사할때 char code 32(space)와 char code 160으로 섞어서 복사한다고 한다. 

이게 평소에는 문제가 안되는데 ide에서는 char code 160 (non-breaking space) 때문에 문제가 된다. 

실제로 문제가 되는 부분을 복사해서 charcode로 바꿔보면 

32와 160이 번갈아가면서 나온다. 

 

3. 해결 

텍스트 복사시 non-breaking space는 삭제 후 클립보드에 복사되도록 수정. 

window.addEventListener('copy',function(e){
	document.execCommand('copy');
	e.preventDefault();
	// NBSP;non-breaking space(\u00A0) 삭제 
	var pastedData = document.getSelection().toString().replace(/\u00A0/gi,'');
	e.clipboardData.setData('text/plain',pastedData);
})

 

* 참고한 사이트 +

unicode 글자를 입력하면 해당 글자의 charcode를 알려주는 코드, 해당 기능을 바로 실행해볼 수 있다. 

https://codepen.io/HerbertAnchovy/pen/XLzdYr

 

charcode encoder-decoder

...

codepen.io

https://blog.naver.com/bb_/221449936369

 

[자바스크립트] charcode 32와 160 차이 (javascript char 160 to 32)

[자바스크립트] charcode 32와 160 차이 (javascript char 160 to 32) charcode 32는 공백(Space)이고, 16...

blog.naver.com

https://stackoverflow.com/questions/19549524/removing-non-break-spaces-in-javascript

 

Removing non-break-spaces in JavaScript

I am having trouble removing spaces from a string. First I am converting the div to text(); to remove the tags (which works) and then I'm trying to remove the " " part of the stri...

stackoverflow.com