4 votes

Entrer des caractères Unicode par leur nom

Parfois, je veux taper des caractères Unicode (tiret cadratin, guillemets, lettres grecques parfois, exposants, etc). Cela peut être fait en utilisant des codes de caractères, mais alors il faut les chercher / les mémoriser, ce qui est... fatigant.

Y a-t-il un moyen d'entrer des caractères par des noms dans Windows?

L'IME japonais a quelque chose comme ça par exemple hoshi (japonais pour "étoile") se convertit en "★" mais pour un sous-ensemble très limité de l'Unicode.

5voto

Grigory M Points 191

Saisie Unicode par nom résout plus ou moins le problème.

3voto

Reddy Lutonadio Points 12001

Vous pouvez essayer uniqoda. Il dispose d'une boîte de recherche où vous pouvez taper le caractère que vous cherchez par son nom. Dernière mise à jour en janvier 2022.

Ou essayez Tout l'Unicode qui peut être installé depuis le Microsoft Store. Dernière mise à jour en 2017.

Vue d'ensemble de tous les caractères Unicode disponibles, y compris les Emojis. Convertissez les caractères sélectionnés dans un format requis (pour les développeurs) ou copiez les caractères dans le presse-papiers. Naviguez de la vue d'ensemble de toutes les plages Unicode vers les caractères. Parmi plus de 54 000 caractères, trouvez celui que vous recherchez en entrant un mot-clé de recherche.

Essayez BabelMap (Unicode Character Map for Windows). Semble plus récent et mis à jour avec les derniers emojis. Dernière mise à jour en septembre 2021 (au moment de la rédaction de cette réponse).

BabelMap est une application gratuite de carte de caractères pour Windows qui vous permet de parcourir tout le répertoire de caractères Unicode presque 144 000 caractères, ou de rechercher un caractère particulier par son nom ou par son point de code. Les caractères peuvent ensuite être copiés dans le presse-papiers pour être utilisés dans n'importe quelle application compatible Unicode.

2voto

phuclv Points 22397

Si vous avez besoin de travailler avec tous les caractères, y compris ceux en dehors du BMP (c'est-à-dire les points de code supérieurs à U+FFFF), ou si vous voulez la dernière version d'Unicode, alors passez cette étape et consultez la version plus complète ci-dessous dans la section suivante

Sinon, le script PowerShell ci-dessous peut être utilisé, car il ne nécessite aucun ressource externe, car il utilise le getuname.dll disponible dans System32

$GetUNameDef = @'
[DllImport("C:/Windows/system32/getuname.dll")]
public static extern int GetUName(
    UInt16 wCharCode,
    [MarshalAs(UnmanagedType.LPWStr)] Text.StringBuilder lpbuf);
'@
$un = Add-Type -MemberDefinition $GetUNameDef -Name "GetName" `
    -PassThru -Namespace Runtime.InteropServices
$name = [Text.StringBuilder]::new(1024)

function Select-Char([string]$pattern) {
    1..0xFFFF | ForEach-Object { if ($un::GetUName($_, $name) -gt 0) {
        $charName = $name.ToString()
        if ($charName -like "*$pattern*") {
            "${charName} (U+{0:X4}): $([char]::ConvertFromUtf32($_))" -f $_
        }
    } }
}

Après cela, vous pouvez appeler Select-Char "pattern" et copier le caractère souhaité

Exemple de sortie :

PS D:\> Select-Char "dash" | Select-Object -First 4 Figure Dash (U+2012): En Dash (U+2013): – Em Dash (U+2014): — Swung Dash (U+2053): PS D:\> Select-Char "alpha" | select -First 6 Latin Small Letter Alpha (U+0251): Latin Small Letter Turned Alpha (U+0252): Greek Capital Letter Alpha With Tonos (U+0386): Greek Capital Letter Alpha (U+0391): Greek Small Letter Alpha With Tonos (U+03AC): Greek Small Letter Alpha (U+03B1):

Je ne sais pas quelle version Unicode utilise getuname.dll. Notez également qu'il existe de nombreuses limitations à cela :

  • La sortie n'est pas triée par fréquence d'utilisation (ce qui nécessite une solution beaucoup plus complexe qui peut nécessiter l'exécution en tant que service)
  • Cela ne fonctionne pas pour les termes non anglais comme le sélecteur d'emoji Windows (chercher chaise ne fonctionnera pas même si vous êtes en localisation française)
  • Cela ne réalise pas de correspondance approximative de chaîne ou de conjugaison de mots comme de nombreux sélecteurs d'emoji intelligents modernes ou les IMEs
  • Certains caractères peuvent sembler être des déchets car il n'y a pas de police disponible pour eux, mais les copier puis les coller ailleurs fonctionne parfaitement

Si vous avez besoin d'une solution plus complète, vous devez d'abord télécharger la dernière base de données officielle d'Unicode UnicodeData.txt. Ensuite, vous pouvez utiliser la fonction PowerShell suivante

function Select-UniChar([string]$pattern) {
    (Select-String $pattern .\UnicodeData.txt | ForEach-Object {
        $codepoint = [uint32]"0x$($_.Line.Substring(0, $_.Line.IndexOf(';')))"
        [char]::ConvertFromUtf32($codepoint)
    } ) -join ', '
}

Démonstration :

D:\> Select-UniChar "gamma" , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Cela fonctionne pour tous les caractères Unicode, mais il présente toujours les mêmes limitations énumérées ci-dessus, et cela ne fonctionnera toujours pas pour de nombreux caractères qui sont combinés à partir de plusieurs points de code comme ceux-ci

La plupart sont des emojis et le script peut être modifié pour rechercher également dans la base de données d'emoji du Consortium Unicode. Mais certains emojis sont vraiment propriétaires de certains vendeurs, donc ils ne sont pas disponibles sur toutes les plateformes et évidemment pas dans la base de données Unicode officielle

Vous pouvez également modifier le script pour imprimer plus d'informations

function Select-UniChar([string]$pattern) {
    $textInfo = [cultureinfo]::GetCultureInfo('en-US').TextInfo

    sls $pattern .\UnicodeData.txt |% {
        $pos1 = $_.Line.IndexOf(';')
        $codepoint = [uint32]"0x$($_.Line.Substring(0, $pos1))"
        $pos2 = $_.Line.IndexOf(';', $pos1 + 1)
        $name = $_.Line.Substring($pos1 + 1, $pos2 - $pos1 - 1).ToLower()
        $name = $textInfo.ToTitleCase($name)
        $c = [char]::ConvertFromUtf32($codepoint)
        "{0} (U+{1}): {2}" -f $name, $codepoint, $c
    }
}

1voto

Ben Collins Points 11318

Y a-t-il un moyen d'entrer des caractères par des noms dans Windows mais pour un très faible sous-ensemble de l'Unicode ?

Oui, en fait votre qualification en fait un candidat parfait pour les hotstrings.

Vous pouvez obtenir une copie d' AutoHotkey (même la version portable est suffisante) et l'utiliser pour exécuter un script simple utilisant des hotstrings que vous pouvez créer et adapter à vos besoins. Par exemple:

::hoshi:: ; Remplacer automatiquement “hoshi” par un glyphe d'étoile
           ; ou
::::    ; Remplacer automatiquement le caractère Kanji pour commencer par une étoile

; Quelques exemples supplémentaires
::hshasei::
::egao::
::taiy::
::hurumaisu::
::wataru::

0voto

Codebling Points 704

Je ne peux pas en jurer, mais je pense que BabelPad pourrait avoir une fonctionnalité similaire à cela. Si vous utilisez Windows et ne vous dérangez pas de vous limiter à cet éditeur en particulier (je pense que vous vouliez une solution plus générale), cela pourrait fonctionner pour vous.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X