Clever-Excel-Forum

Normale Version: excel to html - sprachen werden nicht richtig dargestellt
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hola los Todos!

Ich nutze ein Tool um Werte aus Excel gegen Werte in html Dateien auszutauschen: https://www.clever-excel-forum.de/Thread...en-matchen

Funktioniert auch super, solange man nicht Sprachen mit Sonderzeichen (Spanisch) oder gleich ganz andere Buchstaben wie bei Griechisch oder Bulgarisch nutzt.

Wenn ich das Ganze händisch austausche, funktioniert es wunderbar, ist also kein Problem des Browsers oder von html.

Ich habe es auch schon mit Sprachumstellung probiert, leider erfolglos.

Sogar spanische Texte auf einer reinen spanischen Excelversion bzw. Officeversion werden nicht sauber übertragen.

Ich habe es mit Einschließen von Tags probiert wie
Code:
<p> oder <h>

aber auch nicht erfolgreich.

Danke und Gruss

Peter
Hallöchen,

öffnest Du die html mit einem Texteditor und tauschst dann die Zeichen aus - die sind also in den html-Dateien korrekt enthalten? Eventuell kannst Du mal eine html posten.

Falls nicht, wie kommst Du denn zu den html-Dateien? Wenn Du hier selber irgendwelche Quelltexte irgendwoher beziehst, könnte es auch sein, dass z.B. die Codierung nicht passt - 128 bit enthält z.B. ein paar Zeichen weniger als 256 bit und die höherwertigen werden irgendwohin reduziert, z.B. auf 63 oder andere …
Hi!

Die Dateien sind alle als datei.html gespeichert.

Anbei ein auf das Problem reduzierter Code:

Code:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
</head>

<style>
body {
   background: #0a69b7;
   color: #ffffff;
}

p, h3 {
 text-align: center;
}
</style>

<body>

<div class="w3-container w3-center">
<h1>X-TEXT-X</h1>
</div>


</body>
</html>

Ich möchte mit Deinem Tool X-TEXT-X ersetzen.

Das passiert dann je nach Sprache:

IKT-Techniker/IKT-Technikerin (deutsch) geht ohne Probleme

Börsenhändler/Börsenhändlerin (deutsch) geht nicht fehlerfrei, weil Zeichen "ö" und "ä" nicht erkannt werden) = B�rsenh�ndler/B�rsenh�ndlerin

ICT technician (englisch) geht auch ohne Probleme

técnico de TIC/técnica de TIC (spanisch) geht nicht fehlerfrei, weil Zeichen "é" nicht erkannt wird) = t�cnico de TIC/t�cnica de TIC

technik ICT/technička ICT (tschechisch) geht nicht fehlerfrei, weil Zeichen "č" nicht erkannt wird) bzw. es wird ein "deutsches" c daraus = technik ICT/technicka ICT

τεχνικός πληροφοριακών συστημάτων/δικτύων (griechisch) geht gar nicht weil nix erkannt wird)
 = te?????? p????f???a??? s?st?�?t??/d??t???

Ich habe X-Text-X auch schon so formatiert, jedoch auch mit dem Ergebnis s.o.

Code:
<p><span lang="de">X-TEXT-X</span></p>
<p><span lang="es">X-TEXT-X</span></p>
<p><span lang="cs">X-TEXT-X</span></p>
<p><span lang="el">X-TEXT-X</span></p>


<li lang="de">X-TEXT-X</li>
<li lang="es">X-TEXT-X</li>
<li lang="cs">X-TEXT-X</li>
<li lang="el">X-TEXT-X</li>


Danke und Gruss

Peter
Code:
Sub M_snb_UTF8_ADODB()
    c00 = Join(Array("<!DOCTYPE html>", "<html>", "<head>", "<meta charset=""UTF-8"">", "<meta name=""viewport"" content=""width=device-width, initial-scale=1.0"">", "<link rel=""stylesheet"" href=""https://www.w3schools.com/w3css/4/w3.css"">", "</head>", "<body>", "<div class=""w3-container w3-center"">", "<h1>üéâäàå</h1>", "</div>", "</body>", "</html>"), vbCrLf)

  With CreateObject("ADODB.Stream")
    .Type = 2
    .Charset = "utf-8"
     .Open
    .writetext c00

    .SaveToFile "G:\OF\__UTF8_ADODB.html", 2 
    .Close
  End With
End Sub

Alternativ:

Code:
Sub M_snb_UTF8_ADODB()
    c00 = Join(Array("<!DOCTYPE html>", "<html>", "<head>", "<meta charset=""UTF-8"">", "<meta name=""viewport"" content=""width=device-width, initial-scale=1.0"">", "<link rel=""stylesheet"" href=""https://www.w3schools.com/w3css/4/w3.css"">", "</head>", "<body>", "<div class=""w3-container w3-center"">", "<h1>üéâäàå</h1>", "</div>", "</body>", "</html>"), vbCrLf)

    CreateObject("Scripting.FileSystemObject").CreateTextFile("G:\OF\__UNICOde_FSO.html", , True).write c00
End Sub
Hallöchen,

snb's Ansatz in das Projekt eingearbeitet könnte so aussehen:

Code:
Option Explicit

Sub Ersetzen1()
'Variablendeklarationen
Dim iCnt%, arrDaten
Dim strMsg1$, strMsg2$
'Schleife ueber alle Zeilen
For iCnt = 1 To Cells(Rows.Count, 1).End(xlUp).Row
  'Daten aufnehmen
  arrDaten = Cells(iCnt, 1).Resize(1, 4)
  'File einlesen
  strMsg1 = FileReadUTF_8(arrDaten(1, 1))
  'Daten ersetzen
  strMsg2 = Replace(strMsg1, arrDaten(1, 3), arrDaten(1, 4))
  'Datei schreiben
  FileWriteUTF_8 arrDaten(1, 1), strMsg2
'Ende Schleife ueber alle Zeilen
Next
'FertigMeldung ausgeben
MsgBox "Fertig!"
End Sub

Public Function FileReadUTF_8(ByVal strFile As String) As String
'Wenn die Datei nicht existiert, dann Funktion verlassen
If Dir$(strFile, vbNormal) = "" Then Exit Function
'Datei komplett einlesen
With CreateObject("ADODB.Stream")
    .Type = 2
    .Charset = "UTF-8"
    .Open
    .LoadFromFile strFile
     FileReadUTF_8 = .ReadText
    .Close
'Ende Datei komplett einlesen
End With
End Function

Public Sub FileWriteUTF_8(ByVal strFile As String, ByVal strTxt As String)
'Datei Inhalt ?berschreiben
With CreateObject("ADODB.Stream")
  .Type = 2
  .Charset = "utf-8"
  .Open
  .writetext strTxt
  .SaveToFile strFile, 2
  .Close
'Ende Datei Inhalt ?berschreiben
End With
End Sub
Super! Perfekt! Klasse!

Ihr beiden seid die Geilsten!

Funktioniert sogar mit Arabisch, Chinesisch und Maltekisch.

Danke und Gruss

Peter