# Do you use Julia's extensive Unicode support?

**URL:** <https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702>\
**Category:** General Usage\
**Created:** [June 19, 2026, 6:01pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702 "2026-06-19T18:01:24Z")\
**Posts on this page:** 17\
**Page:** 2

<div class="post-metadata">

**Author:** ![sob](https://avatars.discourse-cdn.com/v4/letter/s/65b543/32.png) [@sob](https://discourse.julialang.org/u/sob)\
**Post date:** [June 23, 2026, 3:05pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/21 "2026-06-23T15:05:03Z")

</div>

I use it for greek letters mostly, when it suits the math. However, I have mixed feelings about it and will probably do an ASCII only rewrite soon.

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [June 23, 2026, 4:38pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/22 "2026-06-23T16:38:04Z")

</div>

> [@foobar\_lv2](#):
>
> I view this as a terrible anti-feature, actively hate it and give my best to never use it. That works mostly OK.

Note that we already had long threads about the opinions of you and others on this matter; see e.g. [Syntax: Escape hatch for unicode haters](https://discourse.julialang.org/t/syntax-escape-hatch-for-unicode-haters/108363) or [Unicode: a bad idea, in general](https://discourse.julialang.org/t/unicode-a-bad-idea-in-general/99897) … it’s probably not productive to re-hash it again.

TLDR: Some people like using Unicode identifiers, primarily to make the code closer to mathematical notations in domains where that is very standardized, and others do not. There are various ways to type them, from editor tab completion (`\foo<TAB>`) to OS shortcuts (e.g. option-x for `≈` on Macs) and language input modes (e.g. switching to Greek input mode) to custom keyboard layouts. For most packages, however, people tend to avoid _requiring_ non-ASCII characters to access an API, either by keeping the external APIs ASCII-only or by providing ASCII equivalents to Unicode APIs (e.g. the way you can use the non-infix `xor(a,b)` instead of the infix `a ⊻ b`). Across the Julia ecosystem, you’ll find varying degrees of Unicode usage in code, but it mostly seems concentrated in math-heavy applications.

---

<div class="post-metadata">

**Author:** ![Philippe\_Maincon1](https://avatars.discourse-cdn.com/v4/letter/p/ec9cab/32.png) [@Philippe\_Maincon1](https://discourse.julialang.org/u/Philippe_Maincon1)\
**Post date:** [June 25, 2026, 5:44am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/23 "2026-06-25T05:44:35Z")

</div>

I use it _a lot_ and enjoy it. Yes, it’s clumsy to write, but this makes math code so much more readable.

And a loop written as

```julia-auto
for xᵢ∈x
   ...
end

```

is too cool for words. In fact, I wish I could write it as

```julia-auto
∀ xᵢ∈x
   ...
end

```

Thumbs up! 😃

---

<div class="post-metadata">

**Author:** ![phma](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/phma/32/6576_2.png) [@phma](https://discourse.julialang.org/u/phma)\
**Post date:** [June 25, 2026, 7:51am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/24 "2026-06-25T07:51:16Z")

</div>

My package WringTwistree ([GitHub - phma/WringTwistree.jl: Whole-message cipher and tree hash, Julia implementation · GitHub](https://github.com/phma/WringTwistree.jl)) has constants called `ℯ⁴_2adic` and `ℯ⁴_base2` and a singleton structure member `яхид::Яхид`. I’ve written (and hopefully will resume working on) a network program in which nodes send messages to each other in which the opcodes are Greek and Russian words; to test it, I used several Unicode characters including a Cyrillic multiocular O and a Gothic hwair.

I have four keyboard layouts (Latin, Greek, Hebrew, and Cyrillic) to choose from, with the Latin keyboard having the compose key enabled, so I can type `⁴` with three keystrokes and `яхид` by switching layouts, but `ℯ` I typed in the REPL with the backslash, then copy-pasted into Kate, and the Cyrillic and Gothic letters I copied from Wiktionary.

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [June 25, 2026, 10:08am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/25 "2026-06-25T10:08:58Z")

</div>

> [@phma](#):
>
> Unicode characters including a Cyrillic multiocular O

A complete offtopic, but I found it interesting and crazy in many respects.

[Cyrillic ocular O variants](https://en.wikipedia.org/wiki/Cyrillic_O_variants) were apparently used only in some Old Church Slavonic manuscripts **and for only one word** (root) - _oko_ (Cyrillic _око_), meaning eye and surely related to Latin _oculus_ or Italian _occhio_. Monocular o (Ꙩ) resembles an eye. Now, eyes mostly come in pairs, therefore in even rarer manuscripts there are two different _o_ glyph forms for the plural word _eyes_.

The multiocular O is a unique glyph occurring exactly once in just a single 15th-century manuscript, as many-eyed angels are not that common. It has been found worth its own Unicode representation, which I find very laudable and inclusive! It is just a pity that **we** (i.e., the mathematical folks) do not get superscript and subscript glyphs for all 26 English letters.

---

<div class="post-metadata">

**Author:** ![cormullion](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cormullion/32/49131_2.png) [@cormullion](https://discourse.julialang.org/u/cormullion)\
**Post date:** [June 25, 2026, 11:12am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/26 "2026-06-25T11:12:01Z")

</div>

Unfortunately it’s not a good idea to use this character, because its design changed in Unicode 15 - what you see depends on when the font was last updated. 😂

# `ꙮ` some fonts

# ꙮ other fonts

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [June 25, 2026, 11:26am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/27 "2026-06-25T11:26:16Z")

</div>

> [@cormullion](#):
>
> Unfortunately it’s not a good idea to use this character, because its design changed in Unicode 15 - what you see depends on when the font was last updated. 😂

Yes, that is another crazy aspect of it: things long dead, buried, and forgotten suddenly start an eventful afterlife of their own.

---

<div class="post-metadata">

**Author:** ![zdenek\_hurak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zdenek_hurak/32/53118_2.png) [@zdenek\_hurak](https://discourse.julialang.org/u/zdenek_hurak)\
**Post date:** [June 25, 2026, 11:34am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/28 "2026-06-25T11:34:46Z")

</div>

I also like the possibility to use `ω = 1` instead of `omega = 1`, but there are also some challenges associated with the use of Unicode symbols:

```julia
julia> a = 1
1

julia> а = 2
2

julia> a
1

```

and

```julia
julia> a + а == 2a
false

```

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [June 25, 2026, 11:55am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/29 "2026-06-25T11:55:49Z")

</div>

> [@zdenek\_hurak](#):
>
> some challenges associated with the use of Unicode symbols

What is the challenge of **not** using in your code those Cyrillic letters that cannot be easily distinguished from Latin ones?

The similar look of ASCII chars I, l, and 1 in many fonts - that is really bad.

---

<div class="post-metadata">

**Author:** ![franckgaga](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/franckgaga/32/218241_2.png) [@franckgaga](https://discourse.julialang.org/u/franckgaga)\
**Post date:** [June 25, 2026, 1:55pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/30 "2026-06-25T13:55:36Z")

</div>

I think these ambiguities are caught by the linter in VS Code?

I really like Unicode support, and I’m a fan of providing an API with both (1) a Unicode and (2) an ASCII interface for the keyword arguments, for example by defining both `σQ=default_val` and `sigmaQ=σQ` for the standard deviation. This is also handy for common notations like `Δ` for the variation and `x̂` for state observers.

---

<div class="post-metadata">

**Author:** ![joa-quim](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joa-quim/32/227_2.png) [@joa-quim](https://discourse.julialang.org/u/joa-quim)\
**Post date:** [June 25, 2026, 2:04pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/31 "2026-06-25T14:04:23Z")

</div>

Mind you of the trap of that kwargs multi-options. The use of each variation recompiles the function, and for big/complex functions this is not a minor issue. Even calling the kwargs with a different order, recompiles.

---

<div class="post-metadata">

**Author:** ![franckgaga](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/franckgaga/32/218241_2.png) [@franckgaga](https://discourse.julialang.org/u/franckgaga)\
**Post date:** [June 25, 2026, 2:23pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/32 "2026-06-25T14:23:53Z")

</div>

Thanks, I did not know that! Good to know. So yes, it is caught by the linter, so this is not a real problem in practice:

 ![image](https://global.discourse-cdn.com/julialang/original/3X/c/4/c4b7216ea68b2da3d1733e6ccc107c861354a87e.png)

---

<div class="post-metadata">

**Author:** ![BLI](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bli/32/37206_2.png) [@BLI](https://discourse.julialang.org/u/BLI)\
**Post date:** [June 25, 2026, 3:13pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/33 "2026-06-25T15:13:59Z")

</div>

I don’t use fancy characters, but the simplest unicode characters. Reason: LaTeX has relatively limited support for unicode in program listings “out of the box”. Even with the Julia Mono fonts (it is not straightforward to set it up).

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [June 25, 2026, 3:32pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/34 "2026-06-25T15:32:05Z")

</div>

> [@BLI](#):
>
> Reason: LaTeX has relatively limited support for unicode in program listings “out of the box”.

Yes, to have Julia code listings in a LaTeX document where the Julia code uses a non-ASCII characters, I end up using a bunch of `\DeclareUnicodeCharacter` statements, e.g.:

```tex
\usepackage{upgreek}
\usepackage[utf8]{inputenc}
\DeclareUnicodeCharacter{03B5}{$\upvarepsilon$}
\DeclareUnicodeCharacter{03B4}{$\updelta$}
\DeclareUnicodeCharacter{0394}{$\Updelta$}
\DeclareUnicodeCharacter{03C9}{$\upomega$}
\DeclareUnicodeCharacter{2032}{$^\prime$}
\DeclareUnicodeCharacter{2248}{$\approx$}
\DeclareUnicodeCharacter{221A}{$\surd$} 
\DeclareUnicodeCharacter{03F5}{$\upepsilon$}
\DeclareUnicodeCharacter{2207}{$\nabla$}
\DeclareUnicodeCharacter{03B1}{$\upalpha$}
\DeclareUnicodeCharacter{22C5}{$\cdot$}
\DeclareUnicodeCharacter{2080}{$_0$}
\DeclareUnicodeCharacter{2081}{$_1$}
\DeclareUnicodeCharacter{2082}{$_2$}
\DeclareUnicodeCharacter{2099}{$_{\mathrm{n}}$}
\DeclareUnicodeCharacter{2297}{$\otimes$}
\DeclareUnicodeCharacter{2113}{$\ell$}

```

…but this doesn’t work for combining characters, I think? Not sure if there is an easier way or an existing tool to automate this?

(The above example was for [course notes](http://github.com/mitmath/matrixcalc/) where I wanted the Julia code listings to mirror the notation in the text.)

---

<div class="post-metadata">

**Author:** ![BLI](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bli/32/37206_2.png) [@BLI](https://discourse.julialang.org/u/BLI)\
**Post date:** [June 25, 2026, 4:41pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/35 "2026-06-25T16:41:43Z")

</div>

I use LyX, and managed to get a reasonable set-up. I do need to declare a few unicode characters, I think, but not too bad. Another thing is that I need to specify color coding for Julia functions, and new functions I create.

One problem is that if the unicode character is the first character on a line, things don’t work. So I need to insert some space or something. I should check to see if there is a zero space character.

---

<div class="post-metadata">

**Author:** ![rveltz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rveltz/32/2707_2.png) [@rveltz](https://discourse.julialang.org/u/rveltz)\
**Post date:** [June 25, 2026, 5:24pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/36 "2026-06-25T17:24:34Z")

</div>

I use the mathcal caracters for all parametric types

---

<div class="post-metadata">

**Author:** ![PeterSimon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petersimon/32/25193_2.png) [@PeterSimon](https://discourse.julialang.org/u/PeterSimon)\
**Post date:** [June 25, 2026, 5:42pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/37 "2026-06-25T17:42:04Z")

</div>

I use Unicode symbols extensively in PSSFSS.jl, where, as one example, it is very nice for microwave engineers to be able to use standard symbols to represent relative permittivity, permeability, loss tangent, etc. for a dielectric layer. For example:

```julia-auto
julia> using PSSFSS

julia> Layer(width = 2mm, ϵᵣ = 2.2, tanδ = 0.001)
Layer: width=2 mm, ϵᵣ=2.2, tanδ=0.001, μᵣ=1.0, mtanδ=0.0, 0 modes

```

The user can also choose to use ASCII equivalents to avoid typing the symbols:

```julia
julia> Layer(width = 2mm, epsr = 2.2, tandel = 0.001)
Layer: width=2 mm, ϵᵣ=2.2, tanδ=0.001, μᵣ=1.0, mtanδ=0.0, 0 modes

```

Note that in either case, the `Layer` object is always mirrored to the REPL using these standard math symbols to display its electrical properties.

[Previous page](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702.md?page=1)
