# 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:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![li210](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/li210/32/221519_2.png) [@li210](https://discourse.julialang.org/u/li210)\
**Post date:** [June 19, 2026, 6:01pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/1 "2026-06-19T18:01:25Z")

</div>

Julia puts emphasis on the possible use of non-ASCII symbols in code. Most of supported operators are Unicode characters, some well known mathematical symbols (albeit practically unseen in programming), some are quite obscure. Many standard library functions use Unicode operators along with their ASCII versions.

Although x ÷ y does look nicer than div(x,y), my keyboard has no “÷” and I don’t want to look for it every integer division.

Do you use the fancy charac when writing Julia code?

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [June 19, 2026, 6:52pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/2 "2026-06-19T18:52:04Z")

</div>

Not sure I use the “extensive” unicode support, but in frequent use for me are

```julia-auto
≤ ≥ ∈ ∉ ₀ ₁ ᵢ ₜ

```

and greek letters `α` etc.

---

<div class="post-metadata">

**Author:** ![Nathan\_Boyer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nathan_boyer/32/14825_2.png) [@Nathan\_Boyer](https://discourse.julialang.org/u/Nathan_Boyer)\
**Post date:** [June 19, 2026, 6:57pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/3 "2026-06-19T18:57:14Z")

</div>

> [@li210](#):
>
> I don’t want to look for it every integer division

Note that Unicode characters can be typed in the REPL and supported editors by tab completing their ASCII name, so you don’t have to “look for it” if you can remember its name.

```julia-repl
help?> ÷
"÷" can be typed by \div<tab>

```

---

<div class="post-metadata">

**Author:** ![Paul\_Soderlind](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/paul_soderlind/32/1753_2.png) [@Paul\_Soderlind](https://discourse.julialang.org/u/Paul_Soderlind)\
**Post date:** [June 19, 2026, 7:02pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/4 "2026-06-19T19:02:00Z")

</div>

second that. (I sort of use what is not easily confused with other symbols and what sublime\_text can easily type.)

---

<div class="post-metadata">

**Author:** ![jbytecode](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jbytecode/32/17719_2.png) [@jbytecode](https://discourse.julialang.org/u/jbytecode)\
**Post date:** [June 19, 2026, 7:09pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/5 "2026-06-19T19:09:30Z")

</div>

As a dinosaur from the DOS days, I use almost nothing but ASCII.

---

<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 19, 2026, 7:37pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/6 "2026-06-19T19:37:25Z")

</div>

Quite a few folks do - I keep (for my own purposes 😉) a collection of code snippets where people like to use Unicode creatively. But in general people don’t use them in registered packages, as there’s a convention to use mostly ASCII for public interfaces.

I think the **Algorithms for Decision Making** book shows some common ones (a lot of Greek and Math Script glyphs):

> **[Algorithms for Decision Making](https://algorithmsbook.com/decisionmaking/#)**

---

<div class="post-metadata">

**Author:** ![kahliburke](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kahliburke/32/208472_2.png) [@kahliburke](https://discourse.julialang.org/u/kahliburke)\
**Post date:** [June 19, 2026, 11:49pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/7 "2026-06-19T23:49:27Z")

</div>

I use them, my AI agents use them, my TUIs use them too. Here’s a little … erm … something … displaying all the actual unicode characters used in source code in a couple of my projects 😃 :clown:  
 ![clowncar](https://global.discourse-cdn.com/julialang/original/3X/2/d/2d37cf8a72a5208e2bb64e5e6cf8bcbde2b69fbb.gif)

---

<div class="post-metadata">

**Author:** ![csvance](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/csvance/32/218927_2.png) [@csvance](https://discourse.julialang.org/u/csvance)\
**Post date:** [June 20, 2026, 1:41am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/8 "2026-06-20T01:41:31Z")

</div>

In a single easily recognizable symbol you can clearly communicate a concept within a specific context/field. Yes, I use them, and yes its worth typing \sigma to get `σ` instead of `sigma`. The set operators are also quite helpful.

---

<div class="post-metadata">

**Author:** ![ducksoverip](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ducksoverip/32/31967_2.png) [@ducksoverip](https://discourse.julialang.org/u/ducksoverip)\
**Post date:** [June 20, 2026, 3:56am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/9 "2026-06-20T03:56:36Z")

</div>

I don’t use unicode characters in code, mostly because I don’t want to try to explain how to type it to new research undergrads and/or elder colleagues. That said, I make heavy use of it in comments, as it’s great for writing out equations, especially with the LaTeX-like backslash-command syntax. Rather than having to write raw LaTeX code or something, I can just say “this function implements this equation from this paper/book”, type the equation out in Unicode and move on, which is nice.

---

<div class="post-metadata">

**Author:** ![kellertuer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kellertuer/32/220707_2.png) [@kellertuer](https://discourse.julialang.org/u/kellertuer)\
**Post date:** [June 20, 2026, 8:32am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/10 "2026-06-20T08:32:26Z")

</div>

I use them when they improve code readability – greek letters in Formulae or whey they then agree with the paper something is based on.

Of course you can “properly” make use of them even more and use ⌚ :julia:🔥.jl! The package could sadly not be registered under that name, so there is the fabulous [GitHub - JuliaWTF/WatchJuliaBurn.jl: The most unneeded package you'll find. · GitHub](https://github.com/JuliaWTF/WatchJuliaBurn.jl)

---

<div class="post-metadata">

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

</div>

I use them all the time. My keyboard has no α, β, γ, either, but I can type them with one mode key, just as we use the shift key for Uppercase Letters.

My keyboard also doesn’t have ñ, é, or ç, but I can type them by hitting another mode key and two additional normal keys.

I need these for writing Español, and the Greek ones for writing math in LaTeX and Typst. So when I started using Julia I was already used to typing all kinds of characters.

My suggestion is to pick an input method for your platform and begin using it to type the characters that you need in every context. It quickly becomes automatic, and you’ll be freed from the tyranny of ASCII.

---

<div class="post-metadata">

**Author:** ![LeePhillips](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/leephillips/32/205514_2.png) [@LeePhillips](https://discourse.julialang.org/u/LeePhillips)\
**Post date:** [June 20, 2026, 5:54pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/12 "2026-06-20T17:54:17Z")

</div>

You know, I don’t think that’s completely useless. It reminds me of APL, and since, sadly, APL.jl seems to be unmaintained…

(The one for `dump` made me LOL.)

---

<div class="post-metadata">

**Author:** ![ryofurue](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ryofurue/32/24531_2.png) [@ryofurue](https://discourse.julialang.org/u/ryofurue)\
**Post date:** [June 22, 2026, 1:29am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/13 "2026-06-22T01:29:39Z")

</div>

I just want to mention that Japanese (and probably Chinese?) speakers can naturally type Julia’s unicode symbols. We just use the [IME](https://en.wikipedia.org/wiki/Input_method): We just type π, α, ∫, ÷, . . . in the same way as we type 漢字 (Chinese characters).

The idea is that you can get such conversion as \sigma to `σ` to work everywhere, not just on Julia editors. (To avoid explaining exactly how Japanese IMEs work, I’ve just used an analogy.)

I hope that use of unicode symbols will be common enough that somebody will develop an unicode IME for other peoples who normally don’t need IMEs to type their own languages. Every modern OS (I think) has a mechanism to write an IME plugin.

---

<div class="post-metadata">

**Author:** ![goerz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/goerz/32/3269_2.png) [@goerz](https://discourse.julialang.org/u/goerz)\
**Post date:** [June 22, 2026, 1:33am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/14 "2026-06-22T01:33:10Z")

</div>

I find it hugely useful to define a suitably rich keyboard layout so that all those mathematical Unicode symbols actually _are_ on my keyboard:

> [@Can package names contain non-ASCII characters?](https://discourse.julialang.org/t/can-package-names-contain-non-ascii-characters/132965/10):
>
> Total side note, and shameless self-promotion, but [The "U.S. International - Scientific" Keyboard Layout - Michael Goerz](https://michaelgoerz.net/notes/the-us-international-scientific-keyboard-layout/index.html) Still: do not require Unicode in the public API of your package; you can use something like function f(; eta=1.0, η=eta) end if you want to allow for Unicode in your API, in addition to ASCII. Certainly, do not require it in your package name. Internally, you can go wild. But also: know your audience. What might be a useful addition to the heavily mathematically educated u…

---

<div class="post-metadata">

**Author:** ![xgdgsc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/xgdgsc/32/608_2.png) [@xgdgsc](https://discourse.julialang.org/u/xgdgsc)\
**Post date:** [June 22, 2026, 2:03am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/15 "2026-06-22T02:03:38Z")

</div>

Yes. For Chinese using [中文代码快速补全 - Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=CodeInChinese.ChineseInputAssistant) we can avoid switching system IME and type Chinese inside VSCode very fast.

---

<div class="post-metadata">

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

</div>

I once found a UNICODE keyboard

> **[Nemeio - The customizable e-Ink keyboard](https://www.nemeio.com/)**
>
> Nemeio is a new generation keyboard. You are now totally free to choose how you use your keyboard with Nemeio’s customizable keys that is adapted to your specific needs.

> [@A Unicode keyboard?](https://discourse.julialang.org/t/a-unicode-keyboard/51252/4):
>
> I routinely use about 100–150 Unicode symbols (in addition to ASCII), mostly Greek letters and math operators. I find it much simpler to remember the \ sequence since I already use it for LaTeX, and just set up Emacs to complete/replace these. I don’t think I would be touch-typing if I had to remember where eg \varphi is — instead, I would spend 5 minutes finding it on the keyboard. I even replaced my Android launcher with [https://github.com/fAndreuzzi/TUI-ConsoleLauncher](https://github.com/fAndreuzzi/TUI-ConsoleLauncher) so I can just type a…

---

<div class="post-metadata">

**Author:** ![karei](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/karei/32/214809_2.png) [@karei](https://discourse.julialang.org/u/karei)\
**Post date:** [June 23, 2026, 4:31am UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/17 "2026-06-23T04:31:19Z")

</div>

Unicode gives Julia a level of mathematical expressiveness that most programming languages do not have. For example, below is a cubic-equation solver I wrote that works generically with any `AbstractFloat` type.

> **solve\_cubic(a::T, b::T, c::T, d::T) where {T\<:AbstractFloat}**
>
> ```julia
> "using Cardano's formula. Returns all three roots as `Complex{T}`."
> function solve_cubic(a::T, b::T, c::T, d::T) where {T<:AbstractFloat}
> iszero(a) && throw(DomainError(a, "a must be nonzero"))
> # Normalize: x³ + bx² + cx + d = 0
> b, c, d = b / a, c / a, d / a
> 
> 𝟐, 𝟑 = T(2), T(3)
> ℂ = Complex{T}
> 
> # Depressed cubic:
> # t³ + pt + q = 0, x = t - b/3
> b², b³ = b * b, b * b * b
> p = c - b² / 𝟑
> q = 𝟐 * b³ / 𝟑^3 - b * c / 𝟑 + d
> 
> Δ = (q / 𝟐)^2 + (p / 𝟑)^3
> x₀ = -b / 𝟑
> 
> if Δ > 0
> # One real root and one complex-conjugate pair
> δ = √Δ
> u = ∛(-q / 𝟐 + δ)
> v = ∛(-q / 𝟐 - δ)
> 
> t₁ = ℂ(u + v)
> t₂ = -(u + v) / 𝟐 + im * (√𝟑 / 𝟐) * (u - v)
> t₃ = conj(t₂)
> 
> elseif Δ < 0
> # Three distinct real roots
> r = 𝟐 * √(-p / 𝟑)
> φ = acos(-q / (𝟐 * √(-(p / 𝟑)^3)))
> πₜ = T(π)
> 
> t₁ = ℂ(r * cos(φ / 𝟑))
> t₂ = ℂ(r * cos((φ + 𝟐 * πₜ) / 𝟑))
> t₃ = ℂ(r * cos((φ + T(4) * πₜ) / 𝟑))
> 
> else
> # Multiple roots
> u = ∛(-q / 𝟐)
> 
> t₁ = ℂ(𝟐 * u)
> t₂ = ℂ(-u)
> t₃ = t₂
> end
> 
> return t₁ + x₀, t₂ + x₀, t₃ + x₀
> end
> 
> ```

---

<div class="post-metadata">

**Author:** ![foobar\_lv2](https://avatars.discourse-cdn.com/v4/letter/f/ee59a6/32.png) [@foobar\_lv2](https://discourse.julialang.org/u/foobar_lv2)\
**Post date:** [June 23, 2026, 12:09pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/18 "2026-06-23T12:09:51Z")

</div>

There are multiple aspects of unicode support.

The first is “prosaic” runtime support: This like String handling unicode just fine, the imo nice design decisions on how to handle invalid utf8 strings, indexing via code-units, etc. This makes writing code that deals with unicode not overly painful.

The second is “prosaic” toolchain support: The julia parser doesn’t hiccup if source-code comments contain non-ascii things, you can write string literals with the actual unicode, etc etc. This is not a high bar, but works without issue (…remember the olden times with bibtex choking on non-ascii?). This is important! And it’s not half-assed like in java (\u1234 get unescaped before tokenization, `String a = "\u0022";` ftw)

Then there is the surface-syntax language support, the contentious “unicode in identifiers `Symbol` position” during parsing / tokenization.

I view this as a terrible anti-feature, actively hate it and give my best to never use it. That works mostly OK.

My main complaint is that `xor` didn’t get an infix ascii version. We have precedent for a lot of multi-character infix ascii operators, e.g. `in`, `<=`, `>=`, `=>`, `!=`. Can’t we get something like that for `xor`?

And before people complain about anglocentrism: That is baked in too deeply anyways. I’m a German and a mathematician. The ubiquitous choice of `\` as escape character or `/` as path separator produces enough carpal tunnel syndrome on German keyboard layouts that most German coders stick to US layout anyways – typing Gruesse or Gr\"u\ss{}e in latex is totally fine (`Gr&uuml;&szlig;e` for Grüße in html is not fine – that’s too long), and thankfully latex supports utf-8 now such that copy-pasting or layout switching also works.

I never got why people want fancy chars in their code – sure the Δ looks nice on blackboard, paper and pdf as latex output, but in the monospaced plaintext world you “obviously” should prefer `\Delta` in latex source and `delta` or `Delta` in julia source (unless you’re typesetting a greek text in latex).

Your @karei 's example makes the point: ` ∛(-q / 𝟐 + δ)` is worse as plaintext than `cbrt(-q / 2 + rho )`, and is just shitty typesetting compared to \sqrt[3]{-\frac q 2 + \delta} or

\sqrt[3]{-\frac q 2 + \delta}

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [June 23, 2026, 12:09pm UTC](https://discourse.julialang.org/t/do-you-use-julias-extensive-unicode-support/137702/19 "2026-06-23T12:09:59Z")

</div>

Not only do I use it, I also probably _abuse_ it, with characters like 𝒞 and 𝐼. But it feels so great.

---

<div class="post-metadata">

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

</div>

I’m guessing you don’t like APL.

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