Grafemes en Go

Guia per manejar text multilingüe en Go: diferència entre bytes, runes i grafemes, i com comptar, invertir i tallar amb grafemes utilitzant uniseg.

domingo, 17 de agosto de 2025 • 3 min de lectura • Equip Q2BSTUDIO

Intel·ligència-Artificial-

Grafemes en Go

Fa temps em vaig trobar amb el problema de diferenciar bytes, runes i grafemes en gestionar noms en tàmil i emojis en una aplicació web escrita en Go: una cadena que semblava curta no ho era i en invertir-la es generava text inintel·ligible. El problema no era Go, sinó assumir què significa caràcter sense més.

Bytes

En Go les cadenes són seqüències immutables de bytes en UTF-8. El que veiem a la pantalla no és necessàriament el que hi ha a sota. Per exemple len(s) retorna el nombre de bytes, no de símbols visibles. Molts caràcters tàmils ocupen 3 bytes i molts emojis es representen amb múltiples bytes.

Runes

Convertir una cadena a []rune retorna els punts de codi Unicode. Això ajuda enfront de comptar bytes, però segueix sense coincidir sempre amb el que percep un usuari. Alguns grafemes es formen combinant diversos punts de codi, per exemple un caràcter base més signes diacrítics.

Grafemes

la biblioteca estàndard de Go es queda en runes. Per treballar amb els caràcters visibles tal com els veu l'usuari és necessari utilitzar una llibreria conscient de grafemes, com github.com/rivo/uniseg. Amb uniseg es poden iterar els graphemes i obtenir exactament les unitats que un humà percep a la pantalla.

Per què importa

Si la teva aplicació gestiona noms, xats o qualsevol text multilingüe, indexar o tallar per bytes pot trencar cadenes en caràcters parcials. Comptar runes millora la situació, però encara pot dividir el que l'usuari considera una sola unitat. Operacions basades en grafemes coincideixen amb l'expectativa de l'usuari. Bugs reals inclouen noms tàmils tallats per la meitat i reaccions amb emoji que es trencaven per prendre només un punt de codi.

Pràctiques recomanades

Comptar punts de codi: utf8.RuneCountInString(s). Comptar unitats visibles: iterar grafemes amb uniseg. Invertir text: parsejar en grafemes, invertir la slice i unir. Tallar cadenes de forma segura: utilitzar índexs que respectin límits de grafema o treballar amb la representació de grafemes en lloc de tallar bytes directament.

Consejos ràpids

Pensa-ho en tres nivells: bytes per a la representació interna, runes per a punts de codi Unicode i grafemes per al que l'usuari realment llegeix a la pantalla. Tria el nivell adequat segons el que vulguis manipular.

Sobre Q2BSTUDIO

En Q2BSTUDIO som una empresa de desenvolupament de programari i aplicacions a mida especialitzada en solucions tecnològiques avançades. Oferim programari a mida, aplicacions a mida i serveis integrals d'intel·ligència artificial per a empreses. A més som experts en ciberseguretat, serveis cloud aws i azure, serveis intel·ligència de negoci i solucions amb power bi. Desenvolupem agents IA, IA per a empreses i plataformes que integren machine learning i anàlisi avançat per resoldre reptes reals de negoci.

Com podem ajudar

Si el teu projecte requereix maneig robust de text multilingüe, integració d'agents IA, anàlisi amb power bi, desplegament segur en serveis cloud aws i azure o consultoria en ciberseguretat i intel·ligència de negoci, en Q2BSTUDIO dissenyem solucions a mida que respecten la complexitat d'Unicode i garanteixen experiència d'usuari correcta. Contacta amb nosaltres per crear programari a mida que inclogui intel·ligència artificial, agents IA i seguretat des del disseny.

Paraules clau

aplicacions a mida, programari a mida, intel·ligència artificial, ciberseguretat, serveis cloud aws i azure, serveis intel·ligència de negoci, ia per a empreses, agents IA, power bi

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.