Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

File stream unicode

14 réponses
Avatar
Guillaume GOURDIN
Bonjour à tous,

je travaille actuellement avec des strings Unicode, et je constate que
les fonctions 'ifstream::open' et consort prennent des 'const char *' en
paramétres. Existe t'il donc des versions unicode des méthode open, ou
alors y a t'il un moyen de convertir un buffer Unicode en const char * ?

Merci beaucoup.

4 réponses

1 2
Avatar
Olivier Miakinen

Pourquoi cela ? Parce que c'est plus simple pour les caractères ASCII
(entre 0 et 127) que pour ceux entre 128 et 255 ? L'encodage diffère
entre les deux dans UTF-8, mais dans UTF-16 ce sont dans les deux cas
un octet nul et un octet identique à celui d'ISO-8859-1.

En Latin1 : E9
En UTF-16 : 00 E9 ou E9 00
En UTF-8 : C3 A9
ah bon au temps pour moi, j'ignorais que utf16 privilégiait iso-8859-1



Plus exactement, UTF-16 code la plupart des caractères Unicode sur deux
octets, chaque octet représentant 8 bits du numéro Unicode. Vu que les
256 premiers numéros d'Unicode sont identiques à ceux d'ISO-Latin1 (dont
les 128 premiers sont eux-mêmes identiques à ceux d'us-ascii), le codage
en UTF-16 d'un caractères ISO-Latin1 (respectivement us-ascii) est donc
trivial.


Avatar
James Kanze
On Jan 19, 1:06 pm, Fabien LE LEZ wrote:
On Sat, 19 Jan 2008 03:29:29 -0800 (PST), James Kanze
:

Où je me posais la question, c'est comment il traite le nom du
fichier (UTF-16 ou autre) quand le fichier est monté à travers
SMB ou NFT, et le système hôte ne comprend que des noms de
fichier char.


Façon bourrin : quand il envoie le nom du fichier, il envoie
un octet après l'autre. Du coup, si tu entregistres un
fichier "présentation.txt", tu peux te retrouver avec un
fichier "présentation.txt" sur le serveur.


Ça, de toute façon. Si le serveur est Unix ou Linux, il ne
s'occupe pas du nom ; il se contente d'utiliser les octets que
tu lui as donné. En revanche, s'il s'agit bien de UTF-16, quand
on les envoie octet par octet, il faut bien au moins décider un
ordre : UTF-16BE ou UTF-16LE. Et je ne suis pas sûr que ça se
passe très bien s'il y a un octet '' dans le lot.

(Quand aux caractères qu'on voit : ça dépend évidemment du
logiciel qui les interprête. Si tu fais « ls » dans un xterm,
par exemple, ça dépend de l'encodage du font de la fenêtre. Et
absolument rien n'empêche d'avoir une fenêtre avec ISO 8859-1,
et une autre avec UTF-8.)

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
James Kanze
On Jan 19, 7:52 pm, Aris wrote:

Où je me posais la question, c'est comment il traite le nom du
fichier (UTF-16 ou autre) quand le fichier est monté à travers
SMB ou NFT, et le système hôte ne comprend que des noms de
fichier char.
Façon bourrin : quand il envoie le nom du fichier, il envoie un octet

après l'autre.


En UTF-16 ?

Du coup, si tu entregistres un fichier "présentation.txt", tu peux te
retrouver avec un fichier "présentation.txt" sur le serveur.


Ça ce n'est pas de l'UTF-16 mais de l'UTF-8. En UTF-16, ça
donnerait présentation.txt
ou présentation.txt selon
que c'est du big-endian ou du little-endian.


Heu ça m'étonnerait très fort qu'en utf-16 le é se traduise
é si en utf8 il est représenté par "é"


En UTF-16, l'encodage d'un é est bien 0x00E9. Ce qui donnerait
soit "é", soit "é" en ISO 8859, si c'est l'encodage de
l'autre côté (ce qui est souvent le cas chez moi). En UTF-8,
évidemment, é donne 0xC3, 0xA9. C-à-d "é" en ISO 8859-1.

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34




Avatar
Loïc Joly
belonged to no one.

3rd, The master who dared claim the ownership of a former slave
would be prosecuted and suitably punished.

4th, Any slave perishing miserably from disease would not only be
healed at public expense, but placed where there was no further
risk of contagion.

5th, Since such slaves had "an urgent claim on the _active_
protection of the Government," they would be treated as wards of
the State until safe from like treatment a second time.

6th, Since this slavery had sprung up in defiance of law, any
official who at a future time connived at such crime would be
liable to impeachment.

The Ordinance sent home for sanction, and approved of by Mr.
Labouchere as needed for the "protection" of slave women, was
proclaimed as Ordinance 12, 1857, after some slight modifications, and
an official appointed a few months before, called the "Protector of
Chinese," was charged with the task of its enforcement. This official
is also called the Registrar General at Hong Kong, but the former name
was given him at the first, and the official at Singapore char
1 2