I'm making a project that requires me to display Chinese and Japanese characters on an LCD. However, the 16x2 LCD display I have does not seem to support displaying Chinese and Japanese characters.

If I do something like lcd.print("おはよう世界"); or lcd.print("简体中文测试");, it seems to display just a bunch of jumbled random characters (which I am assuming have their character values add up to the values of the characters in the code).

How can I get my LCD to display Chinese and Japanese characters?

Or, if there's no way to do it without buying a new one that supports it, where can I buy one?

2 Answers 2


Displaying Kanji or Chinese characters is way beyond the ability of an LCD that displays 5 pixel by 7 pixel characters.

To understand the limitations, take a piece of graph paper and draw out a set of 5x7 rectangles. See if you can define ANY recognizable Japanese or Chinese characters on your graph paper.

Maybe a couple of characters? (Then again, maybe not.)

You need a display with a lot more resolution, like an OLED graphics display. You are also struggling against a microcontroller that doesn't have support for Unicode. It's just not up to the job. You'd be much better off with a Raspberry Pi and a screen like a smart-phone color LCD screen. Install Linux and you can have native support for Unicode.

As others have pointed out, hiragana or katakana would be more practical, and there are some low-res LCDs that support those characters.

  • 3
    There are two ROMs available for those LCDs. One has Latin extended characters in 128-255. The other has Japanese hiragana (or maybe it's katakana, I forget). These Japanese characters can be displayed fine. Kanji is a no no of course, so is Chinese, both simplified and traditional. Select the right model of LCD and you get some Japanese.
    – Majenko
    Jul 21, 2020 at 7:24
  • This one has a single ROM, with what looks like a mix of extended Latin, Katakana and Greek. It can also display up to eight different user-defined glyphs. Jul 21, 2020 at 8:25
  • Good point about Katakana/Hiragana, Majenko and Edgar Bonet. Those are a lot easier to manage. I should have specified that Kanji and Chinese were beyond a 5x7 LCD (And an Arduino) in my answer.
    – Duncan C
    Jul 21, 2020 at 12:15

Your LCD uses a single byte for the character to display, so there are < 256 characters possible. 8 of them are userdefineable, the others are predefined in the LCD-ROM.

The Arduino IDE uses utf-8 code, which takes more than a single byte for all non-ascii characters like in your "おはよう世界".

Even if the character set contains the ones you want to display, you need an escape sequence to have them properly in your print statement.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.