Cara menampilkan karakter tersembunyi secara default (ZERO WIDTH SPACE mis. & # 8203)

197

Saya baru saja kehilangan sebagian dari akhir pekan saya karena ini ... joker - nol lebar ruang. Saya hanya menggunakan beberapa cuplikan dari grup google dan tidak mengenali bahwa ada karakter yang berlipat ganda, karena Idea (11) tidak menunjukkannya, yang menyebabkan masalah dengan parsing file konfigurasi aplikasi saya ... Saya menemukannya secara tidak sengaja di vi .

Apakah ada cara untuk menampilkan hal-hal seperti itu di IntelliJ (atau cara lain untuk memeriksa file) tanpa menggunakan editor eksternal.

IntelliJ 11 / Mac OS 10.7

edit - sampel

Dua baris ini terlihat identik, di browser dan juga di Idea. Anda dapat melihat dalam kode halaman bahwa pada baris pertama yang dikomentari ada spasi nol tersembunyi antara mysql://dan localhostyang menyebabkan masalah. Tentu saja jika Anda mengharapkan 'joker', Anda dapat mencoba menggunakan pencarian dan menggantinya, namun tidak ada yang mengharapkan tanda yang seharusnya tidak ada di sana, terutama jika dia tidak dapat melihatnya dengan cara apa pun.

#db.default.url="jdbc:mysql://​localhost/play-fullcalendar"
 db.default.url="jdbc:mysql://localhost/play-fullcalendar"
biesior
sumber
22
Karakter ini harus dilarang oleh perjanjian internasional. Ini adalah senjata gangguan besar. Saya kehilangan sepanjang hari mencoba mencari tahu apa penyebab kesalahan misterius muncul di konsol js saya. Serius, karakter nol-lebar? Itu resep sempurna untuk masalah. Apa yang dipikirkan komite standar UTF?
Nick
@Nick, saya mengalami masalah memuat JS saya (saya mendapatkan tanda tanya di dalam berlian, di akhir file), dan saya percaya ini masalah penyandian. Saya mendapatkan Uncaught SyntaxError: Unexpected token ILLEGALdan sedikit meneliti menuntun saya pada gagasan bahwa itu adalah masalah simbol tersembunyi. Bagaimana saya menemukan karakter misterius nol-lebar yang sedang Anda bicarakan? Hanya untuk melihat apakah itu masalahnya ...
Milkncookiez

Jawaban:

359

Tidak yakin apa yang Anda maksudkan, tetapi Anda dapat secara permanen mengaktifkan dan menonaktifkan ruang putih Settings -> Editor -> General -> Appearance -> Show whitespaces.

Anda juga dapat mengaturnya untuk file saat ini hanya di View -> Active Editor -> Show WhiteSpaces.

Edit:

Punya waktu luang karena sepertinya masalah yang populer, saya telah menulis sebuah plugin untuk memeriksa kode untuk kelainan tersebut. Ini disebut pelacak Karakter Lebar Nol dan Anda dapat mencobanya .

Vic
sumber
4
ellou 'Vic, terima kasih atas balasannya. Sayangnya opsi ini tidak menunjukkan 'ruang lebar nol' yang disebutkan dalam subjek. Saya yakin karakter itu ada, karena bisa menampilkannya dengan mis. Vi, tapi tidak bisa melihatnya di Ide: /
biesior
2
Saya mengerti .. Saya kira kita harus menunggu CrazyCoder untuk mengatakan bahwa itu tidak didukung atau sesuatu seperti ini :)
Vic
5
Dimulai dengan IntelliJ-14.1 tersembunyi diSettings -> Editor -> General -> Appearance -> Show whitespaces -> Leading | Inner | Trailing
Rob
4
Apakah mungkin untuk membuat titik-titik di penawar spasi putih? seperti di Sublime
OlehZiniak
2
@WillSewell, Anda dapat memengaruhi warna dengan memilih Settings -> Editor -> Color Scheme -> General, lalu dalam kategori itu, buka Text -> Whitespaces. Saya mengubah milik saya dari Foreground # 505050 default menjadi # 404040, dan menemukan mereka terlihat tetapi tidak mengganggu
chaserb
81

Solusi yang sangat sederhana adalah mencari karakter non-ascii file Anda menggunakan ekspresi reguler. Ini dengan baik akan menyoroti semua tempat di mana mereka ditemukan dengan perbatasan.

Cari [^\x00-\x7F]dan centang kotak untuk Regex.

Hasilnya akan terlihat seperti ini (dalam mode gelap):

ruang nol lebar dibuat terlihat

Mikros
sumber
Terima kasih, sebenarnya saya menerima dan memberikan hadiah kepada jawaban Vic untuk sebuah plugin yang dia buat untuk menyelesaikan masalah, yang terhubung pada akhir jawabannya.
biesior
2
Ya, saya melihat itu. Itu memang layak. Tetapi bagi sebagian orang, melakukan pencarian ini mungkin merupakan solusi yang jauh lebih cepat untuk menginstal plugin.
Micros
saya menggunakan ini dalam skrip php untuk membuat konten HTML yang diformat dengan sangat baik untuk migrasi ke WordPress:$string = preg_replace( '/[^\x00-\x7F]/', null, $string ); htmlspecialchars_decode( htmlentities( html_entity_decode( $string ) ) );
aequalsb
@Micros. Apakah ada editor untuk windows yang mencari file untuk karakter non-ascii menggunakan ekspresi reguler? Dalam kasus saya, saya perlu menemukan '\ u11891' untuk memperbaiki jenis kesalahan ini: Sintaksaksir: Karakter tidak valid '\ u11891
user1788736
@ user1788736 Ya, banyak editor yang mendukung sintaksis mendukung ini. Anda bisa menggunakan Sublime Text, atau salah satu aplikasi JetBrains, seperti WebStorm atau IntelliJ.
Micros