Comments on Une tentative pour écrire un Unicode pour les nuls

JML (2019-04-15T10:24:57Z)

« si on cherche "Unicode" dans cette page, cette occurrence n'apparaîtra pas parce qu'il s'agit de ces symboles mathématiques »
Testé sous Firefox et c'est vrai. Firefox refusant de matcher par exemple un e accentué sur un e, ce n'est pas étonnant… Une recherche web rapide ne m'a pas permis de trouver une extension qui ajouterait une option "ignore diacritics" à Ctrl-F, je n'ai trouvé que des pages indiquant que la solution est d'utiliser Chrome dont c'est le comportement par défaut, et des réponses un poil condescendantes sur des forums Firefox sur le thème "you don't want to do this".
Il me semble que je voudrais avoir une recherche approximative (probablement en ignorant également les lettres doublées) par défaut et que je cocherais la case appropriée quand ça me sort trop d'idioties… ?

Je me demande si Google sait trouver l'Unicode caché (mais pas assez fort pour installer Chrome).
J'imagine que la possibilité d'échapper à l'indexation automatique n'est pas passée inaperçue, et je me demande si les organes de surveillance des masses se font perturber par de bêtes substitutions unicode…

Je crois que la seule chose d'Unicode qui intéresse Mme Michu, c'est « de quelle manière je risque de me faire avoir à cause d'Unicode ». Le reste de ton entrée intéressera certainement les autres catégories de nuls ;)

maje (2019-04-14T10:52:50Z)

Sur macOS, UnicodeChecker permet de faire beaucoup de choses avec les caractères : exploration et recherche, propriétés des caractères, décomposition, différence, IDNA, normalisation, etc.
<URL: https://earthlingsoft.net/UnicodeChecker/ >

naedemihcr_anon (2019-04-12T16:58:10Z)

Je signale le site suivant, qui peut notamment être utile dans sa partie "Math / Science" : <URL: http://www.typeit.org/ >

Ruxor (2019-04-12T14:26:18Z)

J'ai réparé le formatage des scripts que mon système de commentaire tout moisi avait cassés (j'en ai profité, d'ailleurs, pour corriger un bug de celui-ci qui doublait les backslashs quand on postait). J'ai fait quelques ajouts dans mon entrée selon ce qu'on m'a dit dans ces commentaires.

@Immae: Il me semble que "U+%04x" devrait être "U+%04X" (l'hexadécimal dans les noms de caractères Unicode est toujours majuscule, cf. ma réponse à jonas ci-dessous).

@momo: Oui, j'utilise un clavier QWERTY US, ou bien QWERTY GB (mais quand même configuré comme QWERTY US avec juste une touche ‘<’/‘>’ en plus). Je trouve que c'est beaucoup plus agréable pour tous les caractères utilisés dans la programmation (pas de cette horreur de AltGr ce qui me libère la touche pour autre chose, pas besoin de shifter pour avoir les chiffres). Comme de toute façon j'ai envie d'une touche Compose (pour taper de l'allemand, ou pour taper toutes sortes de caractères français qui ironiquement ne sont pas présents sur les AZERTY FR), autant m'en servir systématiquement.

@jonas: It's a matter of convention which places use upper-case hex and which places use lower-case hex, but I think it's best to stick to the existing convention (when it's fairly consistent): Unicode characters use upper-case hex, but crypto hashs use lower-case hex, and Git does this in particular — I prefer to follow the general usage.

Ruxor (2019-04-12T13:02:50Z)

@Fred le marin: La bonne notation pour les décimaux est ℤ[1/10]. Si tu veux absolument un D gras-tableau-noir (invention bizarre du système scolaire français), il y a 𝔻 (U+1D53B MATHEMATICAL DOUBLE-STRUCK CAPITAL D). Le ⅅ (U+2145 DOUBLE-STRUCK ITALIC CAPITAL D) est sans doute là pour autre chose mais je ne sais pas bien quoi.

Fred le marin (2019-04-12T11:48:52Z)

ℕ⊊ℤ⊊ⅅ⊊ℚ⊊ℝ⊊ℂ⊊ℍ⊊𝕆

Buenos dias
J'ai une question sur le standard Unicode qui me hante depuis aujourd'hui et qui n'est peut-être pas complètement hors-sujet.
Les décimaux posent-ils un problème insurmontable d'encodage de leur nom-lettre (le symbole n'existe qu'en italique ?) ?
La réponse devrait être bien connue et classique…
(quelqu'un affirmait sur la toile qu'ils n'étaient pas beaucoup utilisés en maths de toute façon)
Merci d'avance de faire la lumière sur cette bizarrerie oblique !

Cigaes (2019-04-11T19:15:25Z)

Je pense qu'il ne serait pas excessivement fatigant de réimplémenter une partie de gucharmap en JavaScript pour le faire tourner dans n'importe quel navigateur. Ce serait probablement un projet utile. La fonctionnalité de reconnaître les caractères d'un texte ne serait pas non plus très difficile à ajouter. Ce serait limité par les filtrages faits par le navigateur, mais ce serait déjà un bon départ.

Peut-être que quelqu'un pourrait en plus contribuer un outil pour entraîner un réseau de neurones pour imiter <URL: http://shapecatcher.com/ > (un site qui aurait mérité d'être mentionné) en local.

Sinon, puisqu'on en est à donner ses scripts, j'utilise ça, qui, il me semble, n'utilise que des modules standards, et pas de données externes, et qui a bien sûr le mérite de ne pas faire porter la sémantique sur des caractères invisibles et soumis à plein de normalisations :

#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use I18N::Langinfo "langinfo", "CODESET";
use Unicode::UCD "charinfo";

my $encoding = langinfo CODESET;
binmode STDIN, ":encoding($encoding)";

sub char_name($) {
  my ($c) = @_;
  my $i = charinfo ord $c;
  return sprintf "<%s>", $i->{name};
}

while(<>) {
  s/([^\n\t\x20-\x7E])/char_name $1/ge;
  print;
}

(je crois qu'on pourrait améliorer un peu avec « use open "locale" » ou un truc du genre, flemme d'y toucher)

jonas (2019-04-11T14:54:15Z)

> les compagnies aériennes n'utilisent certainement pas Unicode dans leur système de réservation antédiluvien, et si votre nom comporte des caractères bizarres, vous le savez certainement au moment d'essayer de prendre un billet

That's technically true, but airplane tickets also won't show your family name right if there's a space in it, so I don't think the main part of their problem is whether they use Unicode.

> l'hexadécimal … ça s'écrit avec les chiffres de 0 à 9 et les lettres de A à F

They shall be written with those digits, yes. There are heretics who think hexadecimal should be written with the digits 0 to 9 and a to f, which is why the git version control system and some /proc interfaces in Linux still print hexadecimal numbers that way, but the correct notation will win eventually.

> saisir des caractères Unicode … décoder … sur les autres OS

Windows has a partial solution for this. In the Wordpad program, which comes with every installation of Windows, if you press the key combination alt+x, that will either replace a single character before the cursor with its code in hexadecimal, or replace a hexadecimal numeral before the cursor with a character of that code. For example, if you open Wordpad (which starts with an empty document open), type “153”, then press alt+x, you get the letter “œ”. You've already explained above that you can copy-paste characters between Wordpad and other programs, that way you can enter that character to most programs on Windows. There are some cases when this method fails, such as for control characters. (The same method also works in Word from the Office package, but that isn't installed on every Windows computer.)

momo (2019-04-11T12:19:30Z)

>> pour taper un ‘é’, par exemple, je tape Compose+apostrophe+e

parce que tu as un clavier QWERTY ?

Immae (2019-04-11T09:24:01Z)

Spaces are important in python, this one should work better :p

https://paste.ee/p/J70Td

Lionel (2019-04-11T08:36:46Z)

Je pense qu'il faudrait mentionner
<URL: https://en.wikipedia.org/wiki/Unicode_input >
.

Bubu (2019-04-11T08:15:03Z)

<URL: https://github.com/Ryosuke839/UnicodePad >, disponible sur le Play Store et F-Droid de parfait sur Android, pour les deux applications que tu cites.

Immae (2019-04-11T07:37:11Z)

Je n’ai pas pu tester ton code perl faute des fichiers qu’il utilise, mais voici ce que j’utilise (en python), un peu plus concis et affichant probablement les mêmes informations :

```
import sys
import unicodedata

string = sys.stdin.readline().strip()
for char in string:
  print("U+%04x" % ord(char), end="")
  if (ord(char) < 31):
    print()
  else:
    print(" " + char + " ", end="")
    try:
      print(unicodedata.name(char), "["+unicodedata.category(char)+"]")
      decomposition = unicodedata.decomposition(char).split(" ")
      if len(decomposition) > 1:
        for subchar in decomposition:
          try:
            unicode_char = chr(int(subchar, 16))
            print("           U+%s" % subchar, unicodedata.name(unicode_char))
          except ValueError:
            print("           " + subchar)
    except:
      pass
```

You can post a comment using the following fields:
Name or nick (mandatory):
Web site URL (optional):
Email address (optional, will not appear):
Identifier phrase (optional, see below):
Attempt to remember the values above?
The comment itself (mandatory):

Optional message for moderator (hidden to others):

Spam protection: please enter below the following signs in reverse order: 6f06f4


Recent comments