Cách hiển thị các ký tự ẩn theo mặc định (ZERO WIDTH SPACE tức là. & # 8203)


197

Tôi vừa mất một phần cuối tuần của mình vì ... trò đùa này - không gian rộng bằng không. Tôi chỉ sử dụng một số đoạn trích từ các nhóm google và không nhận ra rằng có các ký tự được nhân đôi, vì Idea (11) không hiển thị chúng, điều này gây ra sự cố với phân tích tệp cấu hình của ứng dụng của tôi ... Tôi đã phát hiện ra nó vô tình trong vi .

Có cách nào để hiển thị những thứ như vậy trong IntelliJ (hoặc một số cách khác để kiểm tra tệp) mà không cần sử dụng các trình soạn thảo bên ngoài.

IntelliJ 11 / Mac OS 10.7

chỉnh sửa - mẫu

Hai dòng này trông giống hệt nhau, trong trình duyệt và cả trong Idea. Bạn có thể thấy trong mã của trang trong dòng nhận xét đầu tiên có không gian chiều rộng bằng không ẩn giữa mysql://localhost, điều này gây ra vấn đề. Tất nhiên, nếu bạn mong đợi rằng 'joker', bạn có thể thử sử dụng tìm kiếm và thay thế nó, tuy nhiên không ai mong đợi dấu hiệu không nên có, đặc biệt là nếu anh ta không thể nhìn thấy nó theo bất kỳ cách nào.

#db.default.url="jdbc:mysql://​localhost/play-fullcalendar"
 db.default.url="jdbc:mysql://localhost/play-fullcalendar"

22
Nhân vật này nên bị cấm bởi một điều ước quốc tế. Đó là một vũ khí gây xao lãng lớn. Tôi đã mất cả một ngày để cố gắng tìm hiểu nguyên nhân của một lỗi bí ẩn xuất hiện trong bảng điều khiển js của tôi. Nghiêm túc, một nhân vật có chiều rộng bằng không? Đó là một công thức hoàn hảo cho rắc rối. Ủy ban tiêu chuẩn UTF đã nghĩ gì?
Nick

@Nick, tôi gặp sự cố khi tải JS của mình (Tôi đang nhận được một dấu hỏi bên trong một viên kim cương, ở cuối tệp) và tôi tin rằng đó là sự cố mã hóa. Tôi nhận được một Uncaught SyntaxError: Unexpected token ILLEGALchút nghiên cứu đã đưa tôi đến ý tưởng rằng đó là một vấn đề biểu tượng ẩn. Làm thế nào để tôi tìm thấy nhân vật có độ rộng không bí ẩn này mà bạn đang nói đến? Chỉ để xem đó có phải là vấn đề không ...
Milkncookiez

Câu trả lời:


359

Không chắc chắn ý của bạn là gì, nhưng bạn có thể bật và tắt vĩnh viễn các khoảng trắng Settings -> Editor -> General -> Appearance -> Show whitespaces.

Ngoài ra, bạn có thể đặt nó cho một tập tin hiện tại chỉ trong View -> Active Editor -> Show WhiteSpaces.

Biên tập:

Có thời gian rảnh vì có vẻ như là một vấn đề phổ biến, tôi đã viết một plugin để kiểm tra mã cho những bất thường như vậy. Nó được gọi là công cụ định vị Zero Width character và bạn có thể dùng thử .


4
ellou 'Vic, cảm ơn đã trả lời. Thật không may, tùy chọn này không hiển thị 'không gian chiều rộng bằng không' được đề cập trong chủ đề. Tôi chắc chắn rằng nhân vật tồn tại, bởi vì có thể hiển thị nó với nghĩa là. Vi, nhưng không thể thấy nó trong Ý tưởng: /
biesior 26/03 '

2
Tôi hiểu rồi .. Tôi đoán chúng ta sẽ phải chờ CrazyCoder nói rằng nó không được hỗ trợ hoặc đại loại như thế này :)
Vic

5
Bắt đầu với IntelliJ-14.1, nó ẩn trongSettings -> Editor -> General -> Appearance -> Show whitespaces -> Leading | Inner | Trailing
Rob

4
Có thể làm cho các dấu chấm tại nhà thầu không gian trắng? như trong Sublime
OlehZiniak

2
@WillSewell, bạn có thể ảnh hưởng đến màu sắc bằng cách chọn Settings -> Editor -> Color Scheme -> General, sau đó trong danh mục đó, đi đến Text -> Whitespaces. Tôi đã thay đổi của tôi từ Tiền cảnh mặc định # 505050 thành # 404040 và thấy chúng có thể nhìn thấy nhưng không làm sao lãng
chaserb

81

Một giải pháp rất đơn giản là tìm kiếm (các) tệp của bạn để tìm các ký tự không phải mã ascii bằng biểu thức chính quy. Điều này sẽ làm nổi bật độc đáo tất cả các điểm mà chúng được tìm thấy với một đường viền.

Tìm kiếm [^\x00-\x7F]và đánh dấu vào ô cho Regex.

Kết quả sẽ như thế này (ở chế độ tối):

không gian rộng bằng không


Thx, thực sự tôi đã chấp nhận và đưa tiền thưởng cho câu trả lời của Vic cho một plugin mà anh ấy đã tạo để giải quyết vấn đề, được liên kết ở cuối câu trả lời của anh ấy.
biesior

2
Đúng, tôi đã thấy điều đó. Nó rất xứng đáng. Nhưng đối với một số người chỉ cần thực hiện tìm kiếm này có thể là một giải pháp nhanh hơn nhiều để cài đặt plugin.
Kính hiển vi

tôi đã sử dụng điều này trong một tập lệnh php để tạo nội dung HTML được định dạng rất tốt để di chuyển vào WordPress:$string = preg_replace( '/[^\x00-\x7F]/', null, $string ); htmlspecialchars_decode( htmlentities( html_entity_decode( $string ) ) );
aequalsb

@Micros. Có trình soạn thảo nào cho các cửa sổ tìm kiếm (các) tệp cho các ký tự không phải mã ascii bằng biểu thức chính quy không? Trong trường hợp của tôi, tôi cần tìm '\ u11891' để sửa loại lỗi này: SyntaxError: Ký tự không hợp lệ '\ u11891
user1788736

@ user1788736 Có, nhiều biên tập viên đánh dấu cú pháp hỗ trợ này. Bạn có thể sử dụng Sublime Text hoặc một trong các ứng dụng JetBrains, như WebStorm hoặc IntelliJ.
Kính hiển vi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.