Why Hindi Text Turns Into Symbols, and How to Fix It
Short answer: Hindi turns into boxes, question marks or random symbols for one of three reasons: the text is KrutiDev being read without the KrutiDev font, the text is Unicode but the device lacks a Devanagari font, or the file was saved in the wrong encoding. Identify which case you have first, because the fix — convert to Unicode, install a font, or correct the encoding — is different for each.
The three causes, and how to tell them apart
Almost every "my Hindi shows as symbols" problem is one of three things. KrutiDev without its font: the text is legacy KrutiDev, and on any device without that font the underlying Roman characters show as apparent English gibberish. Unicode without a Devanagari font: the text is genuine Unicode Hindi, but the device has no font capable of drawing Devanagari, so it shows empty boxes. Wrong encoding: the file was saved or opened with a mismatched character encoding, producing question marks or scrambled symbols.
Telling them apart is the whole game. Roman-letter gibberish points to KrutiDev; empty boxes point to a missing Unicode font; question marks and mojibake point to an encoding problem. Matching the symptom to the cause tells you which fix to reach for.
| What you see | Most likely cause | Fix |
|---|---|---|
| Random English letters and symbols | KrutiDev read without the font | Convert to Unicode, or install KrutiDev to view |
| Empty boxes (tofu) | Unicode with no Devanagari font | Install/enable a Hindi font |
| Question marks (???) | Wrong encoding on save/open | Reopen with correct (UTF-8) encoding |
| Mixed scrambled symbols | Encoding mismatch (mojibake) | Re-export as UTF-8 Unicode |
Fixing KrutiDev shown as gibberish
If the "symbols" are actually a string of Roman letters and punctuation, the text is KrutiDev being read somewhere the font is not present. You have two options depending on your goal. To simply view the document on your own computer, install the KrutiDev font and select it. To use the text anywhere else — a website, a phone, an email — convert it to Unicode, because installing the font on your machine does nothing for the device on the other end.
For anything online, conversion is the real fix. Once the KrutiDev text is Unicode, it displays as proper Hindi everywhere without depending on a particular font being installed.
Fixing empty boxes (the "tofu" problem)
Empty rectangles, sometimes called tofu, mean the text is valid Unicode but the device has no font that can draw Devanagari. This is common on older systems or minimal setups. The fix is to install or enable a Hindi (Devanagari) font. Modern phones and computers usually include one, so this problem is rarer than it used to be, but where it appears, adding a Devanagari font resolves it immediately without changing the text at all.
Because the text itself is correct Unicode, you do not convert anything here — you only give the device the means to display it. That is the key difference from the KrutiDev case, where the text genuinely needs translating.
Fixing encoding problems
Question marks and scrambled symbols usually mean an encoding mismatch: the file was saved in one character encoding and opened as another. The reliable fix is to work in UTF-8, the standard Unicode encoding, throughout. When saving a file that contains Hindi, choose UTF-8; when opening one that displays wrongly, look for an option to reopen it with UTF-8 encoding. Re-exporting the text as UTF-8 Unicode from a program that still displays it correctly is often the cleanest way to rescue it.
Prevention is simpler than cure here: keep Hindi text as Unicode in UTF-8 from the start, and these mismatches largely disappear. They tend to arise when text passes through older tools or gets copied between systems with different default encodings.
A quick way to diagnose it yourself
You can usually identify the cause in seconds with one test. Select the broken text and change its font to a plain Roman font such as Arial. If it becomes a readable string of English letters and punctuation, it was KrutiDev, and it needs conversion. If it stays as boxes, the text is Unicode and the device is missing a Devanagari font. And if it was already showing question marks before you touched the font, the problem is encoding rather than font, and UTF-8 is the answer.
This single test separates the three cases faster than any amount of trial and error. Once you know which bucket you are in — legacy encoding, missing font, or wrong file encoding — you can go straight to the matching fix instead of guessing. It is worth making this your first move whenever Hindi appears broken, because the wrong fix for the wrong cause simply wastes time.
The general rule
When Hindi shows as symbols, resist the urge to try random fixes. Read the symptom first: Roman gibberish is KrutiDev needing conversion, empty boxes are Unicode needing a font, and question marks are an encoding mismatch needing UTF-8. Each has a clean, specific fix, and applying the wrong one — installing a font for an encoding problem, say — just wastes time. Once you can name the cause from what you see, the solution follows directly.
Frequently asked questions
Why does my Hindi text show as random English letters?
The text is KrutiDev being read without the KrutiDev font. The underlying Roman characters show literally. Convert it to Unicode for online use, or install KrutiDev to view it locally.
Why does Hindi show as empty boxes?
The text is valid Unicode but the device lacks a Devanagari font. Installing or enabling a Hindi font fixes it without changing the text.
Why do I see question marks instead of Hindi?
That usually means an encoding mismatch. Save and open the file as UTF-8, or re-export the text as UTF-8 Unicode from a program that still shows it correctly.
How do I know if it is a font or encoding problem?
Roman-letter gibberish points to KrutiDev, empty boxes to a missing Unicode font, and question marks or scrambled symbols to an encoding mismatch.
What is the "tofu" problem?
Tofu is the nickname for the empty boxes shown when a device cannot draw a character. For Hindi it means a missing Devanagari font, fixed by installing one.
How do I prevent Hindi text from breaking?
Keep it as Unicode in UTF-8 from the start. Most breakage comes from KrutiDev going online without conversion, or text passing through tools with mismatched encodings.