mboost-dp1

Batch konvertering af ANSI text filer til UTF-8 ?


Gå til bund
Gravatar #1 - reefermadness  
21. maj 2010 13:58
Hej er der nogle der kender en smertefri måde at konvertere en masse tekst filer gemt i ANSI character encoding til UTF-8?

Mit problem er at jeg for tiden arbejder med en hjemmeside hvor næsten hele hjemmesiden er UTF-8, men alle mail templates (og det er ca. 60 forskellige mails) er åbenbart skrevet i notepad og gemt uden at ændre tegnsæt, hvilket betyder at mailsne bliver sendt med mystiske tegn.

Jeg troede så at jeg havde fikset det (dovenskab længe leve) ved at ampersand encode specielle tegn, men det er åbenbart ikke alle mail services/klienter der kan fatte det..
Gravatar #2 - arne_v
21. maj 2010 14:08
#1

Find en kopi af iconv og script den.

Eller skriv selv et lille program.
Gravatar #3 - arne_v
21. maj 2010 14:09
&oring; etc. er et HTML fra midt-90'erne fænomen. Omend det med content type text/html stadig burde virke.
Gravatar #4 - reefermadness  
21. maj 2010 14:11
#3 - Det virker også... Indtil videre virker det på alle services vi har testet, med undtagelse af one.com..

Jeg har ærligt talt ingen anelse om hvordan jeg skriver et program der kan konvertere ANSI til UTF-8. :S
Gravatar #5 - arne_v
21. maj 2010 14:19
#4

Hvad kan du programmere i?
Gravatar #6 - reefermadness  
21. maj 2010 14:51
#5 - Jeg er jo webudvikler så jeg arbejder mest med PHP, ASP.net, javascript osv.


Har dog lavet lidt fis i Delphi engang (Men det er MANGE år siden, og det var mest noget TCP sockets jeg legede med)

Kan godt lidt C, men det meste erfaring jeg har der er fra Arduino platformen..

(og C++ har jeg kun lavet hello world lignende ting i)
Gravatar #7 - arne_v
21. maj 2010 15:07
#6

Du kan meget nemt lave det i C# eller VB.NET.

Jeg tror også, at det kan laves i PHP.
Gravatar #8 - arne_v
21. maj 2010 17:12
#6 & 7

C# kode:


using System;
using System.IO;
using System.Text;

namespace E
{
public class Program
{
public static void Process(string fnm, Encoding from, Encoding to)
{
string content = File.ReadAllText(fnm, from);
File.WriteAllText(fnm, content, to);
}
public static void Process(string dir, string pat, Encoding from, Encoding to)
{
foreach(string fnm in Directory.GetFiles(dir, pat))
{
Process(fnm, from, to);
}
}
public static void Main(string[] args)
{
Process(@"C:\e", "*.txt", Encoding.GetEncoding(1252), Encoding.UTF8);
}
}
}
Gravatar #9 - onetreehell
21. maj 2010 17:19
Hvad er ANSI for en encoding?

Jeg ville nok bruge iconv. Det er dejligt nemt.
Gravatar #10 - arne_v
21. maj 2010 17:21
#9

ANSI er ganske rigtigt det du linker til men i Windows verdenen bruges det som betegnelse for CP-1252 (som er stort set identisk med ISO-8859-1).
Gravatar #11 - arne_v
21. maj 2010 17:43
PHP kode:


<?php
function process_one($fnm, $from, $to) {
$content = file_get_contents($fnm);
$content = iconv($from, $to, $content);
file_put_contents($fnm, $content);
}

function process($dir, $pat, $from, $to) {
foreach(glob($dir . '\\' . $pat) as $f) {
process_one($f, $from, $to);;
}
}

process('C:\\e', '*.txt', 'ISO-8859-1', 'UTF-8');
?>
Gravatar #12 - reefermadness  
27. maj 2010 10:25
Traditionen tro sprang jeg over hvor gæret var lavest og brugte QP encoding istedet for (Quoted printable).. Dette virker på alle services/klienter
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login