刪除不可打印的字符 (Removing non-printable character)


問題描述

刪除不可打印的字符 (Removing non‑printable character)

好的,所以我一直在用頭撞桌子。

我正在導入一個由 Indesign 導出的 XML 文件。這會解析它並根據輸入創建一個文件。(我正在用 Node 構建一個 JS 應用程序)

這個文件在我的 PHPStorm IDE 中看起來不錯。但是當我在 gedit 中打開它時,我會在這里和那裡看到一些不需要的換行符。

我已經設法找到了這個字符:‑> <‑(它確實存在 ‑ 將其複製到某處並使用箭頭鍵將光標移動到它上面。它卡在中間)。

十六進制編輯器查看的這個字符會顯示它成為 0x80 0xE2 0xA9

當我嘗試使用簡單的 javascript 替換替換它時;

數據 = data.replace(' ', ''); //左邊有一個字符。相信我。

我收到以下解析錯誤;

在此處輸入圖片描述

在vim中在那個地方顯示以下字符;~@�

我要如何從我的輸出中刪除它?轉義 JS 代碼中的字符導致它編譯得很好,但是奇怪的字符仍然存在。我沒有想法。

我收到以下解析錯誤;

enter image description here

在vim中它在那個地方顯示以下字符;~@�

我要如何從我的輸出中刪除它?轉義 JS 代碼中的字符導致它編譯得很好,但是奇怪的字符仍然存在。我沒有想法。

我收到以下解析錯誤;

enter image description here

在vim中它在那個地方顯示以下字符;~@�

我要如何從我的輸出中刪除它?轉義 JS 代碼中的字符導致它編譯得很好,但是奇怪的字符仍然存在。我沒有想法。

在 vim 中,它在該位置顯示以下字符;~@�

我要如何從我的輸出中刪除它?轉義 JS 代碼中的字符導致它編譯得很好,但是奇怪的字符仍然存在。我沒有想法。

在 vim 中,它在該位置顯示以下字符;~@�

我要如何從我的輸出中刪除它?轉義 JS 代碼中的字符導致它編譯得很好,但是奇怪的字符仍然存在。我沒有想法。


參考解法

方法 1:

You need to use '\u2029' as the search string. The sequence you are trying to replace is a "paragraph separator" Unicode character inserted by InDesign.

So:

string.replace('\u2029', '');

instead of the character itself.

方法 2:

String.replace() doesn't work exactly the way you think. The way you use it, it'll only replace the first occurrence:

> "abc abc abc".replace("a", "x");
'xbc abc abc'

You need to add the g (global) flag and the only standard way is to use regular expression as match:

> "abc abc abc".replace(/a/g, "x");
'xbc xbc xbc'

You can have a look at Fastest method to replace all instances of a character in a string for further ideas.


A search for 0x80 0xE2 0xA9 as UTF‑8 shows the character doesn't exist but it's probably a mistype for 0xE2 0x80 0xA9 which corresponds to 'PARAGRAPH SEPARATOR' (U+2029) as Goran points out in his answer. You don't normally need to encode exotic characters as JavaScript \u#### reference as long as all your tool‑set is properly configured to use UTF‑8 but, in this case, the JavaScript engine considers it a line feed and triggers a syntax error because you aren't allowed to have line feeds in JavaScript strings.

(by RobgoranÁlvaro González)

參考文件

  1. Removing non‑printable character (CC BY‑SA 2.5/3.0/4.0)

#character-encoding #javascript #utf-8 #file-encodings






相關問題

android webview顯示windows-1250字符集html的問題 (Trouble with android webview displaying windows-1250 charset html)

SQL Server 2008:字符編碼 (SQL Server 2008 : Character encoding)

刪除不可打印的字符 (Removing non-printable character)

電子郵件客戶端如何讀取內容類型標頭進行編碼? (How does an email client read the content-type headers for encoding?)

帶有 iText 7 的 PDF 中的希臘字符 (Greek characters in PDF with iText 7)

如何在 C 字符串中的文本或字母中添加下標字符? (How to add a subscript character to text or a letter in a C string?)

來自 URL 編碼問題的 NSArray (NSArray from URL encoding problem)

網絡上有免費提供的 HTML URL 編碼功能嗎?(在 C 中實現) (Is there any HTML URL encoding function freely available on web?? (Implementation in C))

讀取未知編碼的文本行 (Reading lines of text in unknown encoding)

Python - 以 Python 可以使用的格式編碼外來字符的方法? (Python - Way to encode foreign characters in format Python can work with?)

決定 HTTP 標頭的字符集。我應該簡單地把 utf-8 和 fuggedaboutit 放在一起嗎? (Deciding charset for HTTP Headers. Should i simply put utf-8 and fuggedaboutit?)

如何在 python 中將原始 unicode 轉換為 utf8-unicode? (How to convert raw unicode to utf8-unicode in python?)







留言討論