9
votes

Combien d'octets est \ n \ r?

J'ai une application .NET qui essaie de ftp un fichier, mais je me ferme avec 1 octet supplémentaire par ligne. Mon séparateur de ligne est Environnement.Newline, que je crois me traduit par \ n \ r. Combien d'octets est-ce?


0 commentaires

8 Réponses :


1
votes

\ n \ r est 2 octets.


0 commentaires

2
votes

deux octets. Un pour \ n et un pour \ r.


0 commentaires

10
votes

C'est 2 octets, mais il devrait être \ r \ n pas \ n \ r sur Windows OSS


0 commentaires

32
votes

Cela dépend du codage. Dans les codages 8 bits ainsi que UTF-8, il est 2 octets. Dans UCS-2 ou UTF-16, il est 4 octets. Dans UCS-4 ou UTF-32, il est 8 octets.

Mais le problème est que vous êtes probablement en mode ASCII au lieu de mode image.


2 commentaires

Ne sont pas UCS-4 et UTF-32 la même chose?


@ Blueraja-dannypflughoeft: pour l'instant. Mais ce n'est pas obligé de toujours être vrai.



6
votes

en codage ASCII, \ N est le personnage de la nouvelle ligne 0x0a (décimal 10), \ r est le caractère de retour de chariot 0x0d (décimal 13).

As que Jack a déjà dit, la séquence correcte est CR-LF, non inversement.

FTP ajout probablement des caractères LF à votre flux si elles sont mal placées et que vous transmettez le fichier sous forme de texte.


0 commentaires

0
votes

Le logiciel FTP offre généralement un mode de transfert de texte binaire et de texte. En mode texte, la traduction newline se produit pendant le transfert. Cela pourrait être des informations valides, en fonction de votre problème et de la raison pour laquelle vous avez posé la question.


0 commentaires

2
votes

Pour répondre à la question implicite:

Pour utiliser le transfert binaire plutôt que l'ASCII-Transfert dans C #, utilisez P>

FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://example.com"));
reqFTP.UseBinary = true;


0 commentaires

1
votes

Je sais que c'est une ancienne question, mais pour le bien des futurs lecteurs; Vous pouvez déterminer combien d'octets sont dans une chaîne donnée (ou une valeur de chaîne) via ce qui suit: xxx

dans ce cas; xxx

.NET utilise unicode sauf indication contraire; Par exemple, avec un xmlSerializer , vous pouvez spécifier le codage.

N'oubliez pas d'utiliser le codage approprié lorsque vous essayez de compter le nombre d'octets car il est différent avec chaque codage: < / p>

  • Un caractère ASCII en codage ASCII à 8 bits est de 8 bits (1 octet), bien qu'il puisse correspondre à 7 bits.
  • Un caractère ISO-8895-1 dans le codage ISO-8859-1 est de 8 bits (1 octet).
  • Un caractère Unicode dans l'encodage UTF-8 est compris entre 8 bits (1 octet) et 32 ​​bits (4 octets).
  • Un caractère Unicode dans l'encodage UTF-16 est compris entre 16 (2 octets) et 32 ​​bits (4 octets), bien que la plupart des caractères communs prennent 16 bits. Ceci est le codage utilisé par Windows en interne.
  • Un caractère Unicode dans l'encodage UTF-32 est toujours de 32 bits (4 octets).
  • Un personnage ASCII dans UTF-8 est de 8 bits (1 octet) et dans UTF-16 - 16 bits.
  • Les caractères supplémentaires (non-ASCII) dans l'ISO-8895-1 (0xa0-0XFFF) prendraient 16 bits dans UTF-8 et UTF-16.

0 commentaires