Paghahambing ng Teksto

[ RESULTA ]
Look the same
100%
Similarity
+1 / −1
Nagbago
LF / LF
Line endings
These two look the same and are not the same. Every difference below is invisible on screen — which is why nothing appears to be wrong.
[ DIFFERENCES YOU CANNOT SEE ]
L3 · R3trailing whitespace

The left line ends with 1 whitespace character and the right with 0.

[ THE DIFF ]
11 Invoice total: 1,250.00
22 Payment terms: 30 days
3Reference: JD-2026-0814·
3+Reference: JD-2026-0814

Trailing whitespace is shown as ·, a tab as and a non-breaking space as . Drawing them as they are would show two identical rows, which is the problem rather than the answer.

Nananatili sa browser mo ang dalawang teksto. Walang ina-upload, kaya puwede kang magdikit ng kontrata o config file nang hindi ito umaalis sa makina.
[ ANO ITO ]

Ang mga pagkakaibang hindi mo nakikita ang siyang sulit ipagtool. Kayang mapansin ninuman ang napalitang salita. Ang nagpapaubos ng isang hapon ay ang dalawang linyang magkaparehong lumalabas at hindi magkatumbas.

Isang espasyo sa dulo. Isang tab kung saan apat na espasyo ang nasa kabilang file. Isang CRLF laban sa LF, na nagpapaulat sa version control na nagbago ang bawat linya samantalang wala namang nagbago sa paningin mo. Isang non-breaking space na nakopya mula sa browser, na kamukhang-kamukha ng espasyo at hindi espasyo. Isang zero-width na karakter na walang inuukupahang puwang. O isang letrang may tuldik na nakasulat bilang isang code point sa isang panig at bilang letra kasama ang combining mark sa kabila.

Ang diff na tinatawag lamang itong "nabago" at huminto ay walang silbi sa mismong sandaling pinakakailangan ito, dahil titingnan mo ang dalawang magkaparehong hilera at magpapasyang sira ang tool. Kaya kapag nagkaiba ang isang pares sa paraang hindi nakikita, sinasabi ito ng pahina bago ipakita sa iyo ang diff, at tinutukoy ang dahilan. Sa mismong diff, ang espasyo sa dulo ay iginuguhit bilang ·, ang tab bilang at ang non-breaking space bilang .

Naka-off ang Unicode normalisation bilang default, at sinadya ito. Ang "é" bilang isang code point at bilang "e" kasama ang combining na tuldik ay magkamukha at magkaibang bytes — tunay na depekto sa pangalan ng file, sa key ng database o sa password. Ang pag-normalise bilang default ay magtatago sa mismong bagay na hinahanap mo. I-on ito para tiyakin na iyon nga ang tinitingnan mo, at sasabihin ng pahina na hindi na byte-por-byte ang paghahambing.

[ MGA TANONG ]

Magkapareho ang itsura ng dalawang linya pero sabi ng tool magkaiba. Sira ba ito?

Hindi — iyon mismo ang pinaggagamitan ng tool na ito. May hindi nakikita sa screen sa isa sa kanila: espasyo sa dulo, tab kung saan may espasyo ang isa, non-breaking space na galing sa browser, zero-width na karakter mula sa word processor, o letrang may tuldik na dalawang paraan ang pagkakasulat. Kapag pawang di-nakikita ang pagkakaiba, sinasabi ito ng pahina sa itaas at pinapangalanan ang bawat isa, dahil ang "magkaiba ang mga ito" mag-isa ay walang silbi sa mismong sandaling pinakamahalaga.

Ano ang non-breaking space at bakit paulit-ulit itong lumalabas?

Ito ang U+00A0, isang espasyong hindi pinuputol ng browser sa linya. Madalas itong nakakasama kapag kumopya ng teksto mula sa web page o word processor, at hindi ito makikilala sa karaniwang espasyo sa screen. Ibang karakter ito, kaya ituturing ng paghahambing, ng paghahanap sa database o ng pagsusuri ng password na magkaiba ang dalawa — at walang sasabihin sa screen kung bakit.

Sabi ng version control nagbago ang buong file ko pero pareho lang ang itsura. Bakit?

Malamang ang line endings. Tinatapos ng Windows ang linya gamit ang CRLF at ng Unix gamit ang LF, at isang di-nakikitang byte iyon sa bawat linya — kaya lahat ng linya ay binibilang na nagbago. Natutukoy ng pahinang ito ang dalawang panig at sinasabi kung magkaiba, at iyon ang pinakamabilis na paraan para kumpirmahin na iyon lang ang nangyari.

Ano ang Unicode normalisation at bakit ito nakapatay?

Ang letrang é ay puwedeng isulat bilang isang code point, o bilang payak na e na sinusundan ng combining accent. Magkapareho silang lumalabas at magkaibang byte. Isinusulat muli ng normalisation ang dalawa sa parehong anyo. Sinadyang nakapatay ito rito: talagang magkaiba ang dalawang string na iyon, at tunay na depekto ang pagkakaibang iyon sa pangalan ng file, sa key ng database o sa password — ang pag-normalise bilang default ay magtatago sa mismong hinahanap mo. Buksan ito para kumpirmahin kung iyon nga ang nangyayari.

Salita-salita ba o linya-linya ang paghahambing?

Linya-linya, gamit ang Myers na diff algorithm na inaalis muna ang magkaparehong simula at dulo — at iyon ang nagpapabilis sa isang-linyang pagbabago sa file na dalawang libong linya. Ang nabagong linya ay lumalabas bilang isang tanggal at isang dagdag, at kung ang pares ay nagkakaiba lamang sa di-nakikitang paraan, hiwalay itong binabanggit sa itaas ng diff.

May naia-upload ba kahit saan sa teksto ko?

Hindi. Nananatili sa browser mo ang dalawang teksto at walang naipapadala, kaya puwede kang mag-paste ng kontrata, config file o database dump nang hindi ito umaalis sa makina. Wala ring hangganan sa haba na dapat ikabahala sa ilalim ng limang libong linya kada panig.

[ ANG KOMPUTASYON ]
Ang hinahanap nito
Espasyo sa duloang klasiko — hindi nakikita sa dulo ng linya
Tab laban sa espasyomagkaparehong lumalabas sa tamang lapad ng tab
Non-breaking spaceU+00A0, idinikit mula sa browser o dokumento
Zero-width na karakterwalang inuukupahang puwang at talagang nandiyan
Unicode normalisationparehong letra, magkaibang code point
Dulo ng linyaCRLF laban sa LF — isang byte sa bawat linya

Ang bawat isa rito ay lumalabas na wala talaga. Iyon ang nagpapamahal sa kanila.

[ BAKIT MUKHANG NAGBAGO NANG BUO ANG FILE ]
Isang file na 400 linya, na-save sa Windows, saka sa Linux
Linyang ipinapakita ng editor mo na magkaiba0
Linyang ipinapakita ng version control na magkaiba400
Bytes na talagang nagbago kada linya1

Isang carriage return kada linya, hindi nakikita saanman ito ipakita. Iniuulat ng pahinang ito ang dulo ng linya sa magkabilang panig para matiyak mo ito sa ilang segundo sa halip na basahin ang apat na raang magkaparehong linya.

[ SUSUNOD ]
43JSON FormatterAyusin ang dalawang panig bago ihambing
44Base64 Encoder / DecoderI-decode ang isang halaga bago ihambing
45Gumawa ng BarcodePara sa listahan ng produktong kasusuri mo lang
47Gumawa ng Secret KeySa browser din nang buo
[ MAHALAGA ]

Nananatili sa browser mo ang dalawang teksto at walang ipinapadala. Teksto ang inihahambing nito, hindi kahulugan: puwedeng iisa ang sinasabi ng dalawang dokumento sa magkaibang salita at iuulat na magkaiba nang tuluyan. Walang ipinapadala sa mga server namin ang tina-type mo rito — sa browser mo tumatakbo nang buo ang pagkuwenta.