Encodage CSV dans Go : gestion des chaînes entre guillemets
Dans le package encoding/csv de Go, la gestion des chaînes entre guillemets peut parfois conduire à des résultats inattendus . Lors de l'écriture d'enregistrements CSV, il est crucial de comprendre les exigences de la norme en matière de codage des caractères spéciaux, tels que les guillemets doubles.
Conformément à la spécification CSV, les guillemets doubles dans un champ doivent être échappés à l'aide d'un deuxième guillemet double. Cette séquence d'échappement est nécessaire pour des raisons d'analyse.
Exemple :
<code class="go">import "encoding/csv" record := []string{ "Unquoted string", "Cr@zy text with , and \ and \" etc", } writer := csv.NewWriter(writer) writer.Write(record)</code>
Le code ci-dessus écrira une chaîne avec des guillemets doubles échappés :
<code class="csv">Unquoted string "Cr@zy text with , and \ and \" etc"</code>
Éviter les guillemets supplémentaires :
Pour éviter l'insertion de guillemets supplémentaires lors de la lecture d'un fichier CSV, les étapes suivantes doivent être suivies :
Exemple de code :
<code class="go">func writeCSV() { writer := csv.NewWriter(writer) s := "Cr@zy text with , and \ and \" etc" record := []string{ "Unquoted string", "Quoted string", fmt.Sprintf("%q", s), } writer.Write(record) } func readCSV() { reader := csv.NewReader(reader) records, err := reader.ReadAll() for _, record := range records { // Printed records automatically have double quotes unescaped by the CSV reader. fmt.Println(record) } }</code>
Sortie :
[Unquoted string Cr@zy text with , and \ and " etc] [Quoted string Cr@zy text with , and \ and " etc]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!