fxconv et les *char
Posté le 06/08/2021 00:57
Salut !
Petite question concernant fxconv suite à un problème pour un projet en cours.
Je possède cette structure :
struct character {
int x, y;
char *name;
char *dialog;
};
Rien de bien méchant ici, je souhaite avoir le dialogue du personnage ainsi que son nom. Ainsi, dans mon
converters.py j'indique ceci :
def convert_character(input, output, params, target):
with open(input,"r") as dialog:
file = dialog.read().splitlines()
o = fxconv.ObjectData()
o += fxconv.u32((int)(file[0])) + fxconv.u32((int)(file[1]))
o += fxconv.ref(bytes("Salut", 'utf-8'))
o += fxconv.ref(bytes("Bonjour", 'utf-8'))
fxconv.elf(o, output, "_" + params["name"], **target)
Les lignes intéressantes sont celles possédant une référence à une chaîne de caractère. Tout se passe bien durant la compilation, cependant lors de l'affichage de
character.name, j'obtiens une union entre les deux char* :
"SalutBonjour"
Aucun problème pour l'affichage de
character.dialog
(Oui vous ne connaissez pas ce jeu, j'attends de progresser avant d'en parler plus en détail)
Je précise ne faire aucune modification de ces chaînes mais juste un affichage rien de plus simple.
Pendant que j'y suis, comment se passe l'encodage des accents avec gint ? En spécifiant un encodage utf-8 ils ne sont pas affichés.
Merci d'avance !
Fichier joint
Citer : Posté le 06/08/2021 09:42 | #
Ah c'est parce que tu n'as pas de 0 final.
bytes(<n>) crée un tableau de n octets nuls, et un octet nul termine une chaîne.
Pour les accents le problème n'est pas dans l'encodage qui est bien UTF-8 même sur la calculatrice, mais dans la police : celle par défaut de gint n'a que les caractères ASCII pour des questions de place. Vois unicode-fonts pour des polices plus chargées