Tôi có thực sự cần phải mã hóa '&' là '& amp;' không?


207

Tôi đang sử dụng &biểu tượng '' với HTML5 và UTF-8 trong trang web của mình <title>. Google cho thấy các dấu và tốt trên SERPs của nó, cũng như tất cả các trình duyệt trong tiêu đề của chúng.

http://validator.w3.org sẽ cho tôi điều này:

& đã không bắt đầu một tài liệu tham khảo nhân vật. (& có lẽ nên được thoát như &amp;.)

Tôi có thực sự cần phải làm gì &amp;không?

Tôi không băn khoăn về việc các trang của tôi xác thực vì mục đích xác thực, nhưng tôi tò mò muốn nghe ý kiến ​​của mọi người về vấn đề này và liệu nó có quan trọng không và tại sao.


63
Các thông số kỹ thuật không nói như vậy. Áp phích đề cập đến HTML5 không yêu cầu thoát dấu và trong tất cả các kịch bản.
Matthew Wilson

2
Đây phải là Community Wiki, vì bạn đang tìm kiếm ý kiến ​​và không cầu kỳ về việc xác nhận ngụ ý rằng không có cơ sở khách quan nào để trả lời.
Richard JP Le Guen

6
@Richard: thật sao? Mặc dù tôi không đồng ý rằng "xác nhận không thành vấn đề", tôi thấy đây là một câu hỏi rất khách quan: "điều này có phá vỡ bất cứ điều gì ngoài thông số kỹ thuật không?"
Joachim Sauer

2
@YiJiang Các trình duyệt web hiện tại đi rất nhiều để hiểu người dùng . Và Google cũng vậy . Đó là một phần của Spec. Các trình duyệt web trong tương lai thể ít tha thứ hơn. Vì vậy, luôn luôn là một ý tưởng tốt để kiểm tra cách Wikipedia thực hiện và sao chép chúng.
unixman83

2
Thông số HTML nói để chấp nhận đầu vào tào lao. Điều đó có nghĩa là trang web của bạn "được phép" là tào lao bây giờ? Đóng thẻ cần phải được đóng và thoát mọi thứ! Thôi nào mọi người.
doug65536

Câu trả lời:


143

Đúng. Giống như lỗi đã nói, trong HTML, các thuộc tính là #PCDATA có nghĩa là chúng được phân tích cú pháp. Điều này có nghĩa là bạn có thể sử dụng các thực thể nhân vật trong các thuộc tính. Sử dụng &chính nó là sai và nếu không phải cho các trình duyệt khoan dung và thực tế rằng đây là HTML không phải XHTML, sẽ phá vỡ phân tích cú pháp. Chỉ cần thoát khỏi nó là &amp;mọi thứ sẽ ổn thôi.

HTML5 cho phép bạn không bỏ qua nó, nhưng chỉ khi dữ liệu theo sau không giống như một tham chiếu ký tự hợp lệ. Tuy nhiên, tốt hơn hết là thoát khỏi tất cả các trường hợp của biểu tượng này hơn là lo lắng về cái nào nên và cái nào không cần phải có.

Giữ điểm này trong tâm trí; nếu bạn không thoát và & &; điều này rất có thể dẫn đến HTML và tiêm script, ăn cắp cookie và các khai thác khác.

Xin vui lòng chỉ thoát mã của bạn. Nó sẽ giúp bạn tiết kiệm rất nhiều rắc rối trong tương lai.


9
Sẽ không có trình duyệt nào "giải thích sai" a & by chính nó. Mỗi trình duyệt hiện có hiển thị nó là "&". Xem xét rõ ràng anh ta yêu cầu lý do thực tế để làm điều đó, và anh ta tuyên bố rằng anh ta không quan tâm đến việc xác nhận ..
Thomas Bonini

46
Đúng. Nhưng về mặt đạo đức, chúng ta có nên dựa vào sự khoan hồng và xử lý lỗi "tốt đẹp" của trình duyệt không? Hay chúng ta chỉ nên viết mã chính xác?
Delan Azabani

8
@Delan: trong khi tôi cố gắng làm cho mỗi trang tôi viết hợp lệ, tôi hiểu từ việc đọc câu hỏi của anh ấy rằng anh ấy không quan tâm đến "về mặt đạo đức". Anh ấy chỉ quan tâm nếu nó hoạt động hay không. Chúng là hai triết lý khác nhau và cả hai đều có ưu và nhược điểm, và không có "chính xác". Ví dụ: trang web này không xác thực, và đây là một trang web tuyệt vời.
Thomas Bonini

3
@Andreas, nhưng các trình duyệt có đủ lỗi trong cách họ diễn giải mã chính xác, tùy thuộc vào việc họ nhận được kết quả đúng khi bạn gửi cho họ đánh dấu vô nghĩa là chancy. Nó có thể hoạt động ngày hôm nay với ví dụ đó, và sau đó thất bại với ví dụ tiếp theo (giả sử nếu ví dụ tiếp theo có dấu chấm phẩy ở đâu đó sau &)
Jon Hanna

11
Mọi người dường như đang nói về HTML5, nhưng câu hỏi ban đầu nói rằng HTML5 đang được sử dụng. HTML5 rõ ràng cho phép không bị hủy bỏ & trong tình huống này, trừ khi những gì tiếp theo & thường sẽ mở rộng sang một thực thể (ví dụ & copy = 2 có vấn đề nhưng & x = 2 vẫn ổn).
Matthew Wilson

55

Xác thực sang một bên, thực tế vẫn là việc mã hóa một số ký tự nhất định rất quan trọng đối với tài liệu HTML để nó có thể hiển thị đúng và an toàn như một trang web.

Mã hóa &như &amp;trong mọi trường hợp, đối với tôi, là một quy tắc dễ sống hơn, giảm khả năng xảy ra lỗi và thất bại.

So sánh như sau: cái nào dễ hơn? cái nào dễ dàng hơn để bugger lên ?

Phương pháp 1

  1. Viết một số nội dung bao gồm ký tự dấu và.
  2. Mã hóa tất cả.

Phương pháp 2

(với một hạt muối, xin vui lòng;))

  1. Viết một số nội dung bao gồm ký tự dấu và.
  2. Trong từng trường hợp cụ thể, hãy xem xét từng ký hiệu. Xác định xem:
    • Nó bị cô lập, và như vậy rõ ràng là một dấu và. ví dụ. volt & amp
       > Trong trường hợp đó, đừng bận tâm mã hóa nó.
    • Nó không bị cô lập, nhưng bạn cảm thấy nó dù sao cũng không rõ ràng, vì thực thể kết quả không tồn tại và sẽ không bao giờ tồn tại vì danh sách thực thể không bao giờ có thể phát triển. ví dụ amp&volt
       > Trong trường hợp đó, đừng bận tâm mã hóa nó.
    • Nó không bị cô lập, và mơ hồ. ví dụ. volt&amp
       > Mã hóa nó.

??


3
Trường hợp thứ hai amp&volt mơ hồ: &voltBây giờ có phải là một tham chiếu thực thể hay không?
Gumbo

6
@Gumbo Các dấu trong amp&voltkhông một dấu mơ hồ (theo định nghĩa trong HTML spec). Xem mathiasbynens.be/notes/ambigupt-ampersandsMothereff.in/ampersands#amp%26volt .
Mathias Bynens

@MathiasBynens Đến bây giờ (2019), định nghĩa của một ampersand mơ hồ dường như đã thay đổi một chút so với định nghĩa mà bạn đã trích dẫn lại vào năm 2011 trong mathiasbynens.be/notes/ambigupt-ampersands .
Jacob C. nói Phục hồi lại

21

Quy tắc HTML5 khác với HTML4. Nó không bắt buộc trong HTML5 - trừ khi ký hiệu và có vẻ như nó bắt đầu một tên tham số. "& copy = 2" vẫn là một vấn đề, ví dụ, vì & copy; là biểu tượng bản quyền.

Tuy nhiên, đối với tôi, việc quyết định mã hóa hay không mã hóa tùy thuộc vào văn bản sau đây khó hơn. Vì vậy, con đường dễ nhất có lẽ là mã hóa mọi lúc.


2
Nó giống như trích dẫn các giá trị thuộc tính - bạn không cần phải làm vậy, nhưng bạn không thể sai nếu bạn làm điều đó mọi lúc.
Paul D. Chờ

3
&copy=2không phải là vấn đề lớn như bạn nghĩ. Trong các giá trị thuộc tính (ví dụ: hrefthuộc tính), &copysẽ không được coi là tham chiếu ký tự cho ©. Bên ngoài một giá trị thuộc tính, nó sẽ.
Mathias Bynens

Cho rằng một dấu và thường được đặt trước và theo sau là khoảng trắng trong văn bản tiếng Anh, không khó để nhớ hoặc nghĩ về quy tắc tôi tuân theo: Nếu ký hiệu và không chạm vào một ký tự hiển thị khác, gần như luôn luôn, thì nó không cần mã hóa. Nếu không, chỉ cần mã hóa cho đơn giản.
Carl Smith

Bạn có thể thêm một tham chiếu đến các quy tắc HTML5 không?
Ferrybig

17

Tôi nghĩ rằng điều này đã biến thành một câu hỏi nhiều hơn về "tại sao phải theo thông số kỹ thuật khi trình duyệt không quan tâm." Đây là câu trả lời khái quát của tôi:

Tiêu chuẩn không phải là một điều "hiện tại". Họ là một thứ "tương lai". Nếu chúng tôi, với tư cách là nhà phát triển, tuân theo các tiêu chuẩn web, thì các nhà cung cấp trình duyệt có nhiều khả năng thực hiện chính xác các tiêu chuẩn đó và chúng tôi tiến gần hơn đến một web hoàn toàn có thể tương tác, trong đó không cần hack CSS, phát hiện tính năng và phát hiện trình duyệt. Nơi chúng tôi không phải tìm hiểu tại sao bố cục của chúng tôi bị hỏng trong một trình duyệt cụ thể hoặc làm thế nào để khắc phục điều đó.

Cụ thể, nếu HTML5 không yêu cầu sử dụng & amp; trong tình huống cụ thể của bạn và bạn đang sử dụng một loại tài liệu HTML5 (và cũng mong muốn người dùng của bạn sẽ sử dụng các trình duyệt tuân thủ HTML5), thì không có lý do gì để làm điều đó.


1
Nói như vậy, nói chung, bạn phải nhớ rằng hầu hết các cách "tiêu chuẩn" vẫn ở chế độ nháp và có thể thay đổi trong tương lai.
refaelio

6

Vâng, nếu nó đến từ đầu vào của người dùng thì hoàn toàn có, vì những lý do rõ ràng. Hãy suy nghĩ nếu chính trang web này không làm điều đó: tiêu đề của câu hỏi này sẽ hiển thị như tôi có thực sự cần phải mã hóa '&' là '&' không?

Nếu đó chỉ là một cái gì đó giống như vậy echo '<title>Dolce & Gabbana</title>';thì nói đúng ra bạn không cần phải làm vậy. Nó sẽ tốt hơn, nhưng nếu bạn không có người dùng sẽ nhận thấy sự khác biệt.


5

Bạn có thể cho chúng tôi thấy titlethực sự của bạn là gì? Khi tôi gửi

<!DOCTYPE html>
<html>
<title>Dolce & Gabbana</title>
<body>
<p>am i allowed loose & mpersands?</p>
</body>
</html>

đến http://validator.w3.org/ - rõ ràng yêu cầu nó sử dụng chế độ HTML 5 thử nghiệm - nó không có khiếu nại nào về &...


1
Có, HTML5 có trình phân tích cú pháp khác với trình phân tích cú pháp HTML và XHTML trước đó và cho phép các ký hiệu không được giải mã trong các tình huống nhất định.
kevinji

Theo như những ví dụ này, điều này không có gì mới trong HTML5. Cả hai <title>Dolce & Gabbana</title><p>Dolce & Gabbana</p>đều hợp lệ HTML 2.0.
Mathias Bynens

4

Trong HTML, &đánh dấu sự bắt đầu của một tham chiếu, hoặc là một tham chiếu ký tự hoặc của một tham chiếu thực thể . Từ thời điểm đó, trình phân tích cú pháp mong muốn #biểu thị một tham chiếu ký tự hoặc một tên thực thể biểu thị một tham chiếu thực thể, cả hai theo sau là a ;. Đó là hành vi bình thường.

Nhưng nếu tên tài liệu tham khảo hoặc chỉ việc mở tài liệu tham khảo &được theo sau bởi một khoảng trắng hoặc delimiters khác thích ", ', <, >, &, kết thúc ;và thậm chí là một tài liệu tham khảo để đại diện cho một đồng bằng &có thể được bỏ qua:

<p title="&amp;">foo &amp; bar</p>
<p title="&amp">foo &amp bar</p>
<p title="&">foo & bar</p>

Chỉ trong những trường hợp này, kết thúc ;hoặc thậm chí chính tham chiếu có thể được bỏ qua (ít nhất là trong HTML 4). Tôi nghĩ rằng HTML 5 yêu cầu kết thúc ;.

Nhưng đặc tả khuyến nghị luôn luôn sử dụng một tham chiếu như tham chiếu ký tự &#38;hoặc tham chiếu thực thể &amp;để tránh nhầm lẫn:

Tác giả nên sử dụng " &amp;" (ASCII thập phân 38) thay vì " &" để tránh nhầm lẫn với phần đầu của tham chiếu ký tự (dấu phân cách mở tham chiếu thực thể). Tác giả cũng nên sử dụng " &amp;" trong các giá trị thuộc tính vì các tham chiếu ký tự được cho phép trong các giá trị thuộc tính CDATA.


1
Đó là thông số HTML 4 mà bạn liên kết đến; từ việc tôi đọc thông số kỹ thuật HTML 5 (bản nháp), chỉ có các ký hiệu không rõ ràng không được phép. Ví dụ, một dấu và theo sau là khoảng trắng, không mơ hồ và vì vậy (một lần nữa bằng cách đọc của tôi) nên được cho phép - hãy xem câu trả lời của tôi để đánh dấu mà trình xác nhận HTML 5 chấp nhận.
AakashM

1
@AakashM: Tôi không chắc lắm, nghe có vẻ như vậy.
Gumbo

3

Nếu người dùng chuyển nó cho bạn hoặc nó sẽ xuất hiện trong một URL, bạn cần phải thoát nó.

Nếu nó xuất hiện trong văn bản tĩnh trên một trang? Tất cả các trình duyệt sẽ có được điều này đúng cách, bạn đừng lo lắng nhiều về nó, vì nó sẽ hoạt động.


3

Cập nhật (tháng 3 năm 2020): Trình xác nhận W3C không còn phàn nàn về việc thoát URL.

Tôi đã kiểm tra lý do tại sao nhu cầu URL hình ảnh thoát ra, do đó đã thử nó trong https://validator.w3.org . Lời giải thích khá hay. Nó nhấn mạnh rằng thậm chí URL cần phải được thoát. [PS: Tôi đoán nó sẽ không được giải phóng khi được sử dụng vì nhu cầu của URL &. Bất cứ ai có thể làm rõ?]

<img alt="" src="foo?bar=qut&qux=fop" />

Một tham chiếu thực thể đã được tìm thấy trong tài liệu, nhưng không có tham chiếu theo tên được xác định. Thông thường, điều này được gây ra bởi việc viết sai tên tham chiếu, ký hiệu không được mã hóa hoặc bằng cách bỏ dấu chấm phẩy (;). Nguyên nhân phổ biến nhất của lỗi này là các ký hiệu không được mã hóa trong các URL như được mô tả bởi WDG trong "Ampersands trong các URL". Tham chiếu thực thể bắt đầu bằng dấu và (&) và kết thúc bằng dấu chấm phẩy (;). Nếu bạn muốn sử dụng ký hiệu và nghĩa đen trong tài liệu của mình, bạn phải mã hóa thành "&" (ngay cả trong các URL!). Hãy cẩn thận để kết thúc các tham chiếu thực thể bằng dấu chấm phẩy hoặc tham chiếu thực thể của bạn có thể được diễn giải liên quan đến văn bản sau. Cũng nên nhớ rằng các tham chiếu thực thể được đặt tên là phân biệt chữ hoa chữ thường; & Aelig; và là những nhân vật khác nhau.


1
Đọc câu trả lời được bình chọn hàng đầu. Các thuộc tính là #PCDATA và do đó được phân tích cú pháp. Các thực thể được xử lý ở đó. Trong ví dụ của bạn, &bắt đầu một tham chiếu thực thể. Sau khi đọc &qux, trình phân tích cú pháp tìm thấy không có dấu chấm phẩy cuối cùng ( ;), nhưng chạy vào một dấu bằng ( =), không thể là một phần của tên thực thể. Đây phải là lỗi phân tích cú pháp, nếu trình phân tích cú pháp cố gắng thực sự nghiêm ngặt (theo HTML 4). Trong HTML 5, phân tích cú pháp thực thể nói chung thoải mái hơn.
Palec

1
Tôi nghi ngờ rằng nói chung, tốt nhất là sử dụng ;dấu phân cách trong chuỗi truy vấn (khi bạn kiểm soát liên kết) vì lý do đó.
Demi

2

Có, bạn nên cố gắng phục vụ mã hợp lệ nếu có thể.

Hầu hết các trình duyệt sẽ âm thầm sửa lỗi này, nhưng có một vấn đề với việc dựa vào xử lý lỗi trong các trình duyệt. Không có tiêu chuẩn nào về cách xử lý mã không chính xác, do đó, tùy thuộc vào mỗi nhà cung cấp trình duyệt để cố gắng tìm ra phải làm gì với từng lỗi và kết quả có thể khác nhau.

Một số ví dụ trong đó các trình duyệt có khả năng phản ứng khác nhau là nếu bạn đặt các phần tử bên trong một bảng nhưng bên ngoài các ô của bảng hoặc nếu bạn lồng các liên kết vào nhau.

Đối với ví dụ cụ thể của bạn, nó không có khả năng gây ra bất kỳ vấn đề nào, nhưng việc sửa lỗi trong trình duyệt có thể khiến trình duyệt thay đổi từ chế độ tuân thủ tiêu chuẩn sang chế độ quirks, điều này có thể khiến bố cục của bạn bị hỏng hoàn toàn.

Vì vậy, bạn nên sửa các lỗi như thế này trong mã, nếu không phải vì bất cứ điều gì khác để giữ danh sách lỗi trong trình xác nhận ngắn, để bạn có thể phát hiện ra các vấn đề nghiêm trọng hơn.


2

Một vài năm trước, chúng tôi đã nhận được một báo cáo rằng một trong những ứng dụng web của chúng tôi không hiển thị chính xác trong Firefox. Hóa ra trang chứa một thẻ trông giống như

<div style="..." ... style="...">

Khi phải đối mặt với một thuộc tính kiểu lặp đi lặp lại, IE kết hợp cả hai kiểu, trong khi Firefox chỉ sử dụng một trong số chúng, do đó hành vi khác nhau. Tôi đã thay đổi thẻ thành

<div style="...; ..." ...>

và chắc chắn, nó đã khắc phục vấn đề! Đạo đức của câu chuyện là các trình duyệt có cách xử lý HTML hợp lệ phù hợp hơn so với HTML không hợp lệ. Vì vậy, sửa chữa đánh dấu chết tiệt của bạn đã! (Hoặc sử dụng HTML Tidy để sửa nó.)


1

Nếu &được sử dụng trong html thì bạn nên thoát nó

Nếu &được sử dụng trong các chuỗi javascript, ví dụ: an alert('This & that');hoặc document.href bạn không cần sử dụng nó.

Nếu bạn đang sử dụng document.write thì bạn nên sử dụng nó, vd document.write(<p>this &amp; that</p>)


document.writenên tránh. Xem hộp cảnh báo trong w3.org/html/wg/dcraft/html/master/dom.html#document.write%28%29
Oriol

Điểm tốt về document.write(). Nhưng trên tất cả các điểm Alex đang thực hiện về việc viết vào tài liệu từ kịch bản, imo. +1
Patrick M

1

Nó phụ thuộc vào khả năng của một dấu chấm phẩy kết thúc gần bạn &, khiến nó hiển thị một cái gì đó khá khác biệt.

Ví dụ: khi xử lý dữ liệu đầu vào từ người dùng (giả sử, nếu bạn bao gồm chủ đề do người dùng cung cấp của bài đăng diễn đàn trong thẻ tiêu đề của bạn), bạn sẽ không bao giờ biết họ có thể đặt dấu chấm phẩy ngẫu nhiên ở đâu và nó có thể hiển thị ngẫu nhiên các thực thể lạ. Vì vậy, luôn luôn thoát trong tình huống đó.

Đối với html tĩnh của riêng bạn, chắc chắn, bạn có thể bỏ qua nó, nhưng thật đơn giản để bao gồm việc thoát đúng, rằng không có lý do chính đáng nào để tránh nó.


0

Nếu bạn đang thực sự nói về văn bản tĩnh

<title>Foo & Bar</title>

được lưu trữ trong một số tệp trên đĩa cứng và được phục vụ trực tiếp bởi một máy chủ, sau đó có: có lẽ nó không cần phải thoát.

Tuy nhiên, vì hiện tại có rất ít nội dung HTML hoàn toàn tĩnh, tôi sẽ thêm từ chối trách nhiệm sau đây giả định rằng nội dung HTML được tạo từ một số nguồn khác (nội dung cơ sở dữ liệu, đầu vào của người dùng, kết quả cuộc gọi dịch vụ web, kết quả API kế thừa ,. ..):

Nếu bạn không thoát khỏi một cách đơn giản &, sau đó rất có thể là bạn cũng không thoát khỏi một &amp;hoặc một &nbsp;hoặc <b>hoặc <script src="http://attacker.com/evil.js">hoặc bất kỳ văn bản hợp lệ khác. Điều đó có nghĩa là bạn hiển thị sai nội dung của mình và có nhiều khả năng bị nghi ngờ tấn công XSS .

Nói cách khác: khi bạn đã kiểm tra và thoát khỏi các trường hợp có vấn đề khác, thì gần như không có lý do gì để rời khỏi độc lập không hoàn toàn bị phá vỡ nhưng vẫn còn hơi cá - và không được giải thoát.


2
Tôi đã không downvote nhưng, nếu tôi phải đoán, tôi sẽ nói rằng bạn bị hạ thấp bởi vì câu trả lời của bạn (trong khi thông minh) là một chút không phù hợp với câu hỏi. Anh ta không hỏi về việc thoát khỏi đầu vào của người dùng. Anh ta có quyền kiểm soát các nhân vật và về cơ bản là hỏi "Nếu nó làm những gì tôi muốn, điều đó có thực sự quan trọng để tuân theo thông số ngôn ngữ cho bức thư không?" Tức là, anh ta biết rằng có một & bởi vì anh ta đã đưa nó vào.
Matt

@Matt: Tôi hiểu, và điều đó sẽ hợp lý. Tôi chỉ giả định rằng không ai viết các trang HTML tĩnh hoàn toàn nữa và gần như tất cả nội dung ít nhất là hơi động (thường dựa trên một số nội dung cơ sở dữ liệu). Có lẽ giả định đó đã được thực hiện rõ ràng.
Joachim Sauer

-1

không chắc điều này có hữu ích với bất kỳ ai không ... Tôi đã chiến đấu với điều này trong một thời gian ... đây là một regex tuyệt vời mà bạn có thể sử dụng để sửa tất cả các liên kết, javascript, nội dung của mình. Tôi đã phải đối phó với một tấn nội dung di sản mà không ai muốn sửa.

Thêm phần này vào phần ghi đè Kết xuất trong trang chính hoặc điều khiển của bạn:

Xin đừng châm chọc tôi vì đã đặt sai vị trí:

// remove the & from href="blaw?a=b&b=c" and replace with &amp; 
//in urls - this corrects any unencoded & not just those in URL's
// this match will also ignore any matches it finds within <script> blocks AND
// it will also ignore the matches where the link includes a javascript command like
// <a href="javascript:alert{'& & &'}">blaw</a>
html = Regex.Replace(html, "&(?!(?<=(?<outerquote>[\"'])javascript:(?>(?!\\k<outerquote>|[>]).)*)\\k<outerquote>?)(?!(?:[a-zA-Z][a-zA-Z0-9]*|#\\d+);)(?!(?>(?:(?!<script|\\/script>).)*)\\/script>)", "&amp;", RegexOptions.Singleline | RegexOptions.IgnoreCase);

-1

Liên kết này có một ví dụ khá tốt khi nào và tại sao bạn có thể cần phải thoát khỏi &để&amp;

https://jsfiddle.net/vh2h7usk/1/

Thật thú vị, tôi đã phải thoát khỏi nhân vật để thể hiện nó đúng trong câu trả lời của tôi ở đây. Nếu tôi sử dụng tùy chọn mẫu mã tích hợp (từ bảng trả lời), tôi có thể chỉ cần nhập &amp;và nó xuất hiện như bình thường. Nhưng nếu tôi sử dụng <code></code>phần tử theo cách thủ công , thì tôi phải thoát để thể hiện nó một cách chính xác :)

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.