Giải thích về đọc file PHP

Trong file ko có khoảng trắng nhưng đọc ra lại có?
WTF !!!
File: https://drive.google.com/file/d/0B6YOIKAo-B-WeVk4cUlyUjM0LWM/view?usp=sharing

̶C̶̶ó̶ ̶k̶̶h̶̶o̶̶ả̶̶n̶̶g̶ ̶t̶̶r̶̶ắ̶̶n̶̶g̶ ̶r̶̶õ̶ ̶r̶̶à̶̶n̶̶g̶ ̶m̶̶à̶ ̶b̶̶ạ̶̶n̶ :confused: Ý mình nhìn nhầm, ý là khoảng trắng giữa các kí tự hả? Cái này là do bạn lưu file với encoding là unicode, nên mỗi kí tự nó sẽ lưu thành 2 byte. Bạn mở file txt bằng notepad rồi Save as với encoding là ANSI thì sẽ đọc bình thường :grinning:

2 Likes

À ok đc rồi, thanks bạn

Không nên làm vậy, nhìn thì có vẻ giống như file sub, nên giữ encode lại mà tìm cách khác thì hơn, vì có thể sau này dùng các kí tự đặc biệt hoặc file tiếng Việt thì bạn định làm sao, save dạng ascii để code dễ nhưng không dùng được sau này

1 Like

unicode không phải luôn là 2 byte nhé. Các ký tự ASCII vẫn được lưu 1 byte. Còn lỗi của bạn là do bạn dùng Notepad save utf8 có chữ ký (signature) nên nó sẽ thêm vào đầu file các ký tự được gọi là BOM (byte order mark - các đánh dấu thứ tự byte - cái này thì lại liên quan nhiều hơn tới quy định đầu trứng to, nhỏ của UTF16 - 00 đứng trước hay đứng sau).

UTF8: EF BB BF, nếu view ở Asci nó sẽ ra 
UTF16 (trứng to, big endian): FE FF
UTF16 (trứng nhỏ, little endian): FF FE
Ví dụ như ký tự $, mã ASCII 24, thì ở UTF16 little sẽ là 24 00, còn ở UTF16 big sẽ là 00 24, còn nếu mở rộng như ký tự €, 20AC thì ở UTF16 little sẽ là 20 AC còn ở UTF16 big sẽ là AC 20.

Vậy cái chữ ký lúc ban đầu giúp cho các editor detect xem encoding đang dùng (có mùi là encoding gì). Tuy nhiên, cái này k được khuyến khích vì không còn là plain-text và rất nhiều các phần mềm text-editor sẽ hiểu nhầm. Bây giờ thì nhiều editor có khả năng detect encoding dựa vào heuristic (search space char, 0020)

2 Likes

@qloved @Phan_Hoang ok, thanks 2 bạn

4 posts were merged into an existing topic: Không ghi được file trong php

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?