Does Unity support UTF-8 string/text?

All string/text in our project are in UTF-8 format. Some string should be displayed in GUI. The online document says Unity support ttf font file and Unicode(UTF-16), can it support UTF-8. If not, is there any work can be done?

I am evaluating Unity3D, for whether it is suitable for Web MMORPG game. We are in China, our game should support all east asian lanuages.

BTW. We have our own game server, written in C++, we will use .net socket directly and use our own byte stream protocol. All text in server side and DB are in UTF-8.

Yes, it does.

I have used UTF-8 files as text assets in Unity, and (providing you have embedded a Unicode font), it displays the characters properly.

The Mono (.NET) character is a unicode character. C# strings (for instance) are strings of unicode characters regardless of the source they were read from, including a UTF-8 source. So like Duck said it just works if it's in the font. The gotcha for you may be that Unity only supports left-to-right languages out of the box. This was a big thing we ran into looking into implementing some text in some Persian languages. So depending on the language, this might affect you.

One problem with supporting all Asian languages is that fonts in Unity must be pre-rendered to a texture. This can limit fonts to an unreadably small size since all characters must fit in a 2048x2048 texture. This can be alleviated somewhat if you decide to leave out support for older cards and Intel GMA chips, and use a 4096x4096 texture.

Edit: note that this answer only applies to Unity 2.6 and earlier. Unity 3.0 uses dynamic font rendering.

We did create a package that supports asiatic fonts by rendering them directly as text mesh and thus not using Textures to store the font. If you think you may be interested by this package, have a look at our website :


Support of right to left Arabic/ Persian / Kurdi right to left unicode in GUI:

Asset Store

Online Demo