2011-06-10 2 views
2

J'ai une question d'encodage et je voudrais demander de l'aide. Je remarque que si je choisis "UTF-8" comme encodage, il y a (au moins) deux doubles guillemets " et . Mais quand je choisis "ISO-8859-1" comme encodage, je vois que cette dernière double citation devient ¡°, ou parfois par exemple “.question d'encodage en perl

Quelqu'un peut-il expliquer pourquoi c'est le cas? Comment faire correspondre et le remplacer par " en utilisant regexp en perl?

Merci beaucoup.

+2

Définir « pour choisir UTF-8 comme encodage ». Voulez-vous dire 'use utf8' pour le code source, ou' use open qw (: std: utf8) 'pour les flux, ou quelque chose d'autre? – tchrist

+0

Voir aussi [cette réponse] (http://stackoverflow.com/questions/6162484/why-does-modern-perl-avoid-utf-8-by-default/6163129#6163129). – tchrist

Répondre

3

L'ISO-8859-1 est un codage sur un octet par caractère. Les guillemets simples Unicode ne sont pas dans le jeu de caractères ISO-8859-1. Ce que vous voyez est un caractère multi-octet représenté comme une séquence d'octets ISO-8859-1. Pour faire correspondre ces choses bizarres, voir la page de manuel perlunicode, en particulier les séquences d'échappement \ x {...} et \ N {...}.

Pour répondre à votre question, essayez \ x {201C} de faire correspondre le repère de cotation double Unicode gauche et \ x {201D} pour correspondre au repère de cotation double droit. Vous avez manqué ce dernier dans votre question :-).

[mise à jour]

J'ai fourni ma référence ... Certains gentil monsieur au Royaume-Uni a une page sur ASCII and Unicode quotation marks. La double-citation ASCII/ISO-8859-1 plain vanilla est juste appelée QUOTATION MARK.

+0

merci pour votre réponse. :) Alors, quel est le nom de l'autre guillemet double? –

+0

juste QUOTATION MARK U + 0022? –

+0

@Qiang: Oui. J'ai ajouté une mise à jour avec le lien que j'aurais dû inclure en premier lieu – Nemo