Peut on créer des caracteres spéciaux personnalisé

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Peut on créer des caracteres spéciaux personnalisé

Message par Kwai chang caine »

Bonjour à tous

Bah, tout est dans le titre.

Je voudrais savoir, si il serait possible de créer des caracteres spéciaux, qui n'existent pas dans la table ASCII, mais que l'on pourrait ecrire avec une touche.
Un peu comme les caracteres chinois. :D

Par exemple un caractere qui serait la combinaison de trois barres, une "|" une "_" mais tout en haut, et une "|" pour faire un petit pont.

Merci de votre aide
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Bonjour mon Kwai machin truc ....
Tu peux changer de font de caractère ou en éditer une à ta convenance avec un éditeur !

Bon week end !
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

D'ailleurs, il existe un truc sur tous les PC avec XP qui s'appelle eudcedit.exe et qui est dans le dossier "System32"

D'après ce que j'ai vu, ça sert a créer des caractères privés.
Mais ne me demandez pas comment ça fonctionne, j'en sais rien.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bonjour mon bon BROSSDEN

Oui mais, ça va se baser sur les 255 caracteres ASCII, je pense.
C'est à dire que windows va convertir par exemple un A de tel font ou bien un symbole qui correspond au a dans la police wedding par exemple.

Mais ce que j'aurais voulu savoir c'est est ce que je peux garder les 255 que l'on a en ASCII et etendre avec d'autre que je pourrais créer ou bien on est limité technologiquement à 255. :roll:

Bonjour CHRIS

Merci de l'info je vais jeter un coup d'oeil. 8)
Merci à vous deux :wink:
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

les codes ascii on ete prévu, si je me souviens bien


les caracteres 0 a 31
sont des caracteres réservé au code "escape" c'est a dire des codes pour le materiel (saut de page,saut de ligne, d'une imprimante par exemple)

pour les caracteres de 32 a 127
c'est a dire les caracteres utilisé pour un texte,pour une langue !!
les caracteres legaux en somme...

et de 128 a 255 c'est justement les caracteres etendus (ascii etendu)
pour pouvoir y coller tout ce que l'on veut sans avoir a craindre qu'un texte ne soit modifié !!

donc si tu change une fonte change les caracteres de 128 a 255 :)
soit 127 caractere possible, c'est pas mal :D

de la sorte tu ne risque pas d'avoir de surprise avec les autres textes
le jour ou tu personalise une fonte !! :)

apres faut voir la Norme unicode, car il me semble qu'elle ajoute des possibilités de personnalisation (tout en conservant les codes 0 a 127 ) ...
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bonjour DOBRO

Ah d'accord
Je croyais que les caracteres étendus etait coincés comme les autres.

Mais alors quand on fait outils/table ASCII dans l'ide de pure, pourquoi ils sont déjà ecris, c'est les caracteres par defaut ?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Kwai chang caine a écrit :Bonjour DOBRO

Ah d'accord
Je croyais que les caracteres étendus etait coincés comme les autres.

Mais alors quand on fait outils/table ASCII dans l'ide de pure, pourquoi ils sont déjà ecris, c'est les caracteres par defaut ?
non , ce sont les caracteres de la fonte que tu regarde !!

meme si c'est vrais "qu'ils" ont pris l'habitude de mettre les caracteres accentué dans les codes 127 a 255

c'est n'est pas une norme !!
le code ascii n'avait pas ete prévue pour les langues autre que l'anglais au départ !!

le code ascii allait de 0 a 127 au debut !!

puis sur la pression des langues avec accent (français, espagnol, allemand), "ils" ont ajoutés les codes 127 a 255 ...

c'est pourquoi sur certains texte les accents ne sont pas pris en compte
et qu'a la place on aperçoit un caractère "bizard" :lol:

c'est parceque chez les allemands, les accents ne sont pas les memes que chez nous , du coup au lieu d'avoir le caractere d'origine de la fonte allemande, on se retrouve avec un caractere de remplacement chez nous..

et je ne parle pas des caracteres contenu dans un texte chinois :lol:

dans le cadre d'une application perso tu peux te faire une fonte qui change les caracteres 127 a 255 , simplement tu perdra quelques accents de la langue française ...











Qu'est-ce que le code ASCII ?

La mémoire de l'ordinateur conserve toutes les données sous forme numérique. Il n'existe pas de méthode pour stocker directement les caractères. Chaque caractère possède donc son équivalent en code numérique : c'est le code ASCII (American Standard Code for Information Interchange - traduisez « Code Americain Standard pour l'Echange d'Informations »). Le code ASCII de base représentait les caractères sur 7 bits (c'est-à-dire 128 caractères possibles, de 0 à 127).

* Les codes 0 à 31 ne sont pas des caractères. On les appelle caractères de contrôle car ils permettent de faire des actions telles que :
o retour à la ligne (CR)
o Bip sonore (BEL)
* Les codes 65 à 90 représentent les majuscules
* Les codes 97 à 122 représentent les minuscules
(Il suffit de modifier le 6ème bit pour passer de majuscules à minuscules, c'est-à-dire ajouter 32 au code ASCII en base décimale.)

Table des caractères ASCII

caractère code ASCII code hexadécimal
NUL (Null) 0 00
SOH (Start of heading) 1 01
STX (Start of text) 2 02
ETX (End of text) 3 03
EOT (End of transmission) 4 04
ENQ (Enquiry) 5 05
ACK (Acknowledge) 6 06
BEL (Bell) 7 07
BS (Backspace) 8 08
TAB (Tabulation horizontale) 9 09
LF (Line Feed, saut de ligne) 10 0A
VT (Vertical tabulation, tabulation verticale) 11 0B
FF (Form feed) 12 0C
CR (Carriage return, retour à la ligne) 13 0D
SO (Shift out) 14 0E
SI (Shift in) 15 0F
DLE (Data link escape) 16 10
DC1 (Device control 1) 17 11
DC2 (Device control 2) 18 12
DC3 (Device control 3) 19 13
DC4 (Device control 4) 20 14
NAK (Negative acknowledgement) 21 15
SYN (Synchronous idle) 22 16
ETB (End of transmission block, fin de bloc de transmission) 23 17
CAN (Cancel, annulation) 24 18
EM (End of medium, fin du médium) 25 19
SUB (Substitute, substitut) 26 1A
ESC (Escape, caractère d'échappement) 27 1B
FS (File separator, séparateur de fichier) 28 1C
GS (Group separator, séparateur de groupe) 29 1D
RS (Record separator, séparateur d'enregistrement) 30 1E
US (Unit separator, séparateur d'enregistrement) 31 1F
SP (Space, espace) 32 20
! 33 21
" 34 22
# 35 23
$ 36 24
% 37 25
& 38 26
' 39 27
( 40 28
) 41 29
* 42 2A
+ 43 2B
, 44 2C
- 45 2D
. 46 2E
/ 47 2F
0 48 30
1 49 31
2 50 32
3 51 33
4 52 34
5 53 35
6 54 36
7 55 37
8 56 38
9 57 39
: 58 3A
; 59 3B
< 60 3C
= 61 3D
> 62 3E
? 63 3F
@ 64 40
A 65 41
B 66 42
C 67 43
D 68 44
E 69 45
F 70 46
G 71 47
H 72 48
I 73 49
J 74 4A
K 75 4B
L 76 4C
M 77 4D
N 78 4E
O 79 4F
P 80 50
Q 81 51
R 82 52
S 83 53
T 84 54
U 85 55
V 86 56
W 87 57
X 88 58
Y 89 59
Z 90 5A
[ 91 5B
\ 92 5C
] 93 5D
^ 94 5E
_ 95 5F
` 96 60
a 97 61
b 98 62
c 99 63
d 100 64
e 101 65
f 102 66
g 103 67
h 104 68
i 105 69
j 106 6A
k 107 6B
l 108 6C
m 109 6D
n 110 6E
o 111 6F
p 112 70
q 113 71
r 114 72
s 115 73
t 116 74
u 117 75
v 118 76
w 119 77
x 120 78
y 121 79
z 122 7A
{ 123 7B
| 124 7C
} 125 7D
~ 126 7E
Touche de suppression 127 7F
Table des caractères ASCII Etendue

Le code ASCII a été mis au point pour la langue anglaise, il ne contient donc pas de caractères accentués, ni de caractères spécifiques à une langue. Pour coder ce type de caractère il faut recourir à un autre code. Le code ASCII a donc été étendu à 8 bits (un octet) pour pouvoir coder plus de caractères (on parle d'ailleurs de code ASCII étendu...).
Ce code attribue les valeurs 0 à 255 (donc codées sur 8 bits, soit 1 octet) aux lettres majuscules et minuscules, aux chiffres, aux marques de ponctuation et aux autres symboles (caractères accentués dans le cas du code iso-latin1).

Le code ASCII étendu n'est pas unique et dépend fortement de la plateforme utilisée.

Les deux jeux de caractères ASCII étendus les plus couramment utilisés sont :

* Le code ASCII étendu OEM, c'est-à-dire celui qui équipait les premières machines de type IBM PC

Image



ASCII étendu OEM - OEM Extended ASCII
* Le code ASCII étendu ANSI, utilisé par les systèmes d'exploitation récents
Image

ASCII étendu ANSI - ANSI Extended ASCII
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message par case »

ou alors regarder du coté d'unicode et par exemple te bidouiller quelque chose avec ^^
ImageImage
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

@DOBRO

Merci, je commence a mieux comprendre pour les caracteres speciaux et la table aSCII etendue sur 8 octets

Bonjour CASE

Merci pour l'info.
Alors la par contre je suis allé voir sur WIKI et c'est pas de la tarte :roll:
Y'a des liens de partout qui envois à d'autres liens ....
De ce que j'ai compris, on peux utiliser jusqu'a 32 bits pour adresser un caractere, ça fait du monde ça. :D
ça commence à m'intérésser.

En fait ce que je voudrais faire c'est réduire au maximum une phrase, ou un codage.
Alors j'ai pensé à remplacé un mot par un seul caractere.
Mais comme on est limité à 255 ça faisait que 255 mots possibles et encore en comptant les caracteres de controles :cry:
Mais si on peux avoir jusqu'a 32 bits d'adressage, je devrais pouvoir passer tous les mots de la langue française ou presque.

Mais la ou j'ai rien compris c'est comment on gere ça avec PB.
Et comment "dessiner" un nouveau caractere si c'est possible, est ce que c'est avec eudcedit.exe comme me l'a dit CHRIS ??? :roll:
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Mon KCC
Tu vas te mettre dans un drôle de de bazard si tu commences à vouloir convertir tous les mots de la langue francaise en un caractère sur 16 ou 32 bites. N'oublie pas qu'il va te falloir une table de codage/décodage qui risque d'être énorme et lourde auusi bien à gerer qu'à contruire (je ne te parle pas des temps pour chaque verbe, des pluriels...
De plus si tu utilises toujours le même code pour le même mot ton codage va être craqué en moins de deux !
Je pense qu'il est plus raisonable d'utiliser un système de cryptage de ton cru ou autre pour arriver à une solution plus viable, plus facile à mettre en oeuvre et surtout beaucoup plus difficile à craquer !

Enfin c'est juste mon avis !

Ci-après mon système de cryptage pour exemple !

Code : Tout sélectionner

 Enumeration 
    #Win0 : #Frame0 : #Frame1 : #Frame2 : #Frame3 
    #Str1: #Str2 : #Str3 : #Str4 
    #BP0 : #BP1 : #BP2 
    #Bar 
  EndEnumeration 
  
  Procedure Programme() 
    Cle.s=GetGadgetText(#Str1) 
    RandomSeed(Val(GetGadgetText(#Str2))) 
    lg.l=Lof(1) 
    lc=Len(Cle) 
    *orig = AllocateMemory(lg+8) : 
    *clef = AllocateMemory(lg+8) 
    *code = AllocateMemory(lg+8) 
    For n=0 To lg 
      If (n % 14000) = 0 
        x.f=(n/lg*75) 
        SetGadgetState(#Bar, x) 
        UpdateWindow_(GadgetID(#Bar)) 
      EndIf 
      oct=Random(lc) 
      PokeC(*clef+n,PeekC(@Cle+oct)) 
    Next 
    ReadData(1,*orig,lg) 
    
    For n.l = 0 To lg Step 8 
      If (n % 14000) = 0 
        x.f=(n/lg*25)+75 
        SetGadgetState(#Bar, x) 
        UpdateWindow_(GadgetID(#Bar)) 
        EndIf 
      a.q = PeekQ(*orig+n) 
      b.q = PeekQ(*clef+n) 
      c.q = a ! b 
      PokeQ(*code+n,c) 
    Next 
    WriteData(2,*code,lg) 
    SetGadgetState(#Bar,0) 
  EndProcedure 
  
  Procedure Open_Win0() 
    If OpenWindow(#Win0, 40, 100, 713, 180, "Encrypte  - Décrypte",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) 
      If CreateGadgetList(WindowID(#Win0)) 
        Frame3DGadget(#Frame0, 10, 10, 570, 50, "Phrase servant de mot de passe") 
        StringGadget(#Str1, 20, 30, 550, 20, "1 - * "+Chr(34)+"Mignonne allons voir si la rose, qui ce mation avait éclose"+Chr(34)+" * ") 
        Frame3DGadget(#Frame1, 600, 10, 80, 50, "Clef de code") 
        StringGadget(#Str2, 610, 30, 60, 20, "1500", #PB_String_Numeric|#PB_Text_Center) 
        Frame3DGadget(#Frame2, 10, 70, 310, 50, "Fichier Source") 
        StringGadget(#Str3, 20, 90, 265, 20, "") 
        Frame3DGadget(#Frame3, 370, 70, 310, 50, "Fichier cible") 
        StringGadget(#Str4, 380, 90, 265, 20, "") 
        ButtonGadget(#BP0, 250, 130, 200, 30, "Encryptage / Décryptage") 
        DisableGadget(#BP0,1) 
        ButtonGadget(#BP1, 285, 90, 25, 20, "...") 
        ButtonGadget(#BP2, 645, 90, 25, 20, "...") 
        ProgressBarGadget(#Bar, 10,165, 695, 10, 1, 100) 
      EndIf 
    EndIf 
  EndProcedure 
  
  Open_Win0() 
  SetActiveGadget(#Str1) 
  
  Repeat 
    Event = WaitWindowEvent() 
    WindowID = EventWindow() 
    GadgetID = EventGadget() 
    EventType = EventType() 
    If Event = #PB_Event_Gadget 
      If GadgetID = #BP1 
        SetGadgetText(#Str3,OpenFileRequester("Sectionnez le fichier Source à Traiter","*.*","*.*",1) ) 
      ElseIf GadgetID = #BP2 
        SetGadgetText(#Str4,OpenFileRequester("Sectionnez le fichier Cible qui sera Traité","*.*","*.*",1) ) 
        OpenFile(2,GetGadgetText(#Str4)) 
        If Lof(2)>0 And IsFile(2) 
          If MessageRequester("Attention le fichier existe déjà","Voulez vous vraiment écraser le contenu de ce fichier",4) <> 6 
            SetGadgetText(#Str4,"") 
          EndIf 
        EndIf 
        CloseFile(2) 
      ElseIf GadgetID = #BP0 
        OpenFile(1,GetGadgetText(#Str3)) 
        CreateFile(2,GetGadgetText(#Str4)) 
        Programme() 
        SetGadgetText(#Str3,GetGadgetText(#Str4)) 
        SetGadgetText(#Str4,"") 
        DisableGadget(#BP0,1) 
        CloseFile(1) 
        CloseFile(2) 
      EndIf 
      If GetGadgetText(#Str1) >"" And GetGadgetText(#Str2) >"" And GetGadgetText(#Str3) >"" And GetGadgetText(#Str4) >""  
        DisableGadget(#BP0,0) 
      EndIf 
    EndIf 
  Until Event = #PB_Event_CloseWindow 
  End 
Denis

Bonne Jounée à tous
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

qui ce mation avait éclose
c'est codé aussi ? :lol:
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

@ Frenchy Pilou

C'était pour voir si certains lisaient vraiment mes posts ! :lol:
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Mon BROSSDEN préféré, de tous les BROSSDEN du monde entier :D

Je te remercie de ton génial code, qui m'a crypté un fichier en moins de temps que je fais l'amour.
Ce qui est un exploit vu que je suis super rapide. :D
D'ailleurs j'y pense,................. c'est peut etre pour ça que ma femme m'appelle "mon lapin" :roll:

Bref revenons à nos biquettes, je me suis mal exprimé, enfin pas completement.
En fait je voudrais faire des clefs d'activations ou y'a tout dedans, le nom de la personne, l'ip de la machine, nom machine, nom entreprise, etc ...

Alors je suis passé par l'ASCII pour convertir en chiffre faire une sauce mathematique, puis reconvertir en lettre ce qui pouvait l'etre.

Et comme tu peux t'en douter, malgré cette reconvertion en lettre ma clef c'est plus une clef, mais une telecommande car elle porte au moins a 15 metres de caracteres :lol:

Donc je m'etais dis, dans mon "godiwoke mononeuronal" (Référence à orange mécanique :wink: ), que si j'allouais à chaque nouveau mot que j'entrerais dans chaque nouvelle clef un seul caractere qui resterais le meme, je pourrais faire des clefs tres courtes. :D

Mais le bleme, c'est que 255 mots c'est un peu short, meme pour moi qui ne m'exprime principalement qu'en onomatopées. :D

Et quand j'ai vu qu'on pouvais avoir 32 bits (le reve de tout homme :oops:) alors la mon projet prenait à nouveau de l'espoir.

Mais le bleme c'est j'ai rien compris à cette histoire d' UNICODE, et comment on utilise ça avec pure. :cry:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bon j'ai tout lu FREUD.
Et le coton commence à se transformer en brouillard.

J'ai cherché sur ce forum et celui US.

Sur celui-ci, j'ai trouvé un code de NICO:
http://www.purebasic.fr/french/viewtopi ... code+ascii

Code : Tout sélectionner

Procedure.l Ansi2Uni(ansi.s) 
  size.l=MultiByteToWideChar_(#CP_ACP,0,ansi,-1,0,0) 
  Dim unicode.w(size) 
  MultiByteToWideChar_(#CP_ACP, 0, ansi, Len(ansi), unicode(), size) 
  ProcedureReturn @unicode()  
EndProcedure 
  
Procedure.s Uni2Ansi(*Unicode.l) 
  size.l = WideCharToMultiByte_(#CP_ACP, 0, *Unicode, -1, #Null, #Null, #Null, #Null) 
  ansi.s=Space(size) 
  WideCharToMultiByte_(#CP_ACP, 0, *Unicode, -1, @ansi, size, #Null, #Null) 
  ProcedureReturn ansi  
EndProcedure 
  
*pointeur=Ansi2Uni("Ben ça alors, dis donc, si j'avais su.") 
Debug Uni2Ansi(*pointeur) 
Et j'ai pas compris, pourquoi il transforme la phrase en un chiffre 8O
Et que veut dire ce chiffre ???

Apres je suis allé chez nos amis et alors la c'est la cerise sur le kebab 8O
http://www.purebasic.fr/english/viewtop ... 85aa8f8928

C'est la que le brouillard s'est transformé en coton :cry:

Ils parlent de KANJI de KAMASUTRA, ...........ah non ............de HIRAGANA. :D

A part que les caracteres y sont super beau, c'est tout ce que j'ai compris.
En plus j'adore ce forum US, mais ils ont un super defaut, ils parlent pas français :D
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

Essaie plutôt utf8 :lol: (dixit Nico)
L'ordinateur est né avec le code ASCII définit par la norme ANSI (Américaine), un caractère étant codé sur 8 bits (de 0 à 127). Les codes (de 128 à 255) étaient différents suivant les pays (Europe de l'ouest).

Certains pays étaient exclus car leur jeu de caractères ne pouvait pas être codifié dans cette norme, la chine, l'hébreux.....etc

Il a bien fallu uniformiser tout ça avec une nouvelle norme:unicode, codé sur 16 bits (65535 valeurs) pour avoir un code universel et unique pour tout les pays.

OUI, mais alors il faut deux fois plus de place pour du simple texte!
alors est né UTF-8 conciliant le code ASCII et le code UNICODE.......
Répondre