2012-08-16 12 views
9

Có thể giải thích cho tôi sự khác biệt giữa   and   không?Sự khác biệt giữa và  

Tôi có dữ liệu html được lưu trữ trong cơ sở dữ liệu ở dạng nhị phân và không gian trong đó có thể là   hoặc   hoặc đôi khi  .

Vấn đề nữa là khi tôi chuyển đổi HTML này thành văn bản thuần túy sử dụng JSoup lib nó đang chuyển đổi đúng cách nhưng nếu tôi sử dụng phương thức String.contains (chuỗi của tôi). Có vẻ như dữ liệu HTML có số   khác với dữ liệu có số  . Chuỗi không được tìm thấy trong hoặc ngược lại.

Ví dụ:

HTML1: This is my test string

HTML2: This is my test string

Nếu tôi chuyển nó sang văn bản đơn giản sử dụng JSoup. Nó trả

HTML 1: Đây là chuỗi thử nghiệm của tôi

HTML 2: Đây là chuỗi thử nghiệm của tôi

Nhưng vẫn cả hai chuỗi là không giống nhau. Tại sao nó như vậy?

Trả lời

24

  là không gian cổ điển, là bạn nhận được khi bạn nhấn spacebar của bạn, đại diện bởi thực thể HTML của ông tương đương.

   đại diện cho non-breaking space, thường được sử dụng để ngăn chặn sự sụp đổ của nhiều không gian họp bởi trình duyệt:

"    " => "" (sụp đổ vào chỉ có một không gian)

"    " => "        "(không được thu gọn)

Nếu bạn phân tích cú pháp một chuỗi chứa cả không gian cổ điển và không phá vỡ, bạn có thể repla một cách an toàn ce cái khác.

3

& # 32 là ký tự cho phím cách.

& # 160 và & nbsp là cả hai ký tự cho khoảng trắng.

Nếu dữ liệu của bạn đến từ các nguồn khác nhau, có thể các ký hiệu khoảng trắng đã được mã hóa khác nhau.

So sánh trực tiếp, chúng có thể được hiển thị là khác nhau.

+0

Có cách nào để tìm mã hóa phong cách của văn bản hiện tại? – Ketan

3

 , chỉ là ký tự khoảng trắng. Sự xuất hiện thường xuyên của ký tự này sẽ sụp đổ thành một không gian ký tự ở cuối.

Trong trường hợp &#160  cả hai đại diện cho ký tự khoảng trắng và chúng xuất hiện liên tiếp nhau, chúng sẽ bị thu gọn hoặc ngắt thành một ký tự khoảng trắng. Chỉ

, sự khác biệt giữa chúng là &#160 là số HTML  là một tên HTML.

Về cơ bản, tất cả đều là các thực thể HTML. Bạn có thể tìm hiểu và biết về chúng, nhìn thấy các liên kết sau.

  1. Link 1
  2. Link 2
1

Java 8 trở đi sau nên làm việc:

string.replace("\\h", " "); 

nơi \ h là một nhân vật khoảng trắng ngang như mô tả here