[Problem] JFritz [v0.7.8][Bug] Telefonbuch-Import

MaxHinrich

Neuer User
Mitglied seit
3 Mai 2020
Beiträge
3
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen,


beim Versuch das Fritz!Box-Telefonbuch in JFritz zu importieren muss beachtet werden, dass Umlaute, das "ß", das "&" und möglicherweise auch noch andere Zeichen anscheinend nicht akzeptiert werden. Obwohl in der Originaldatei Angaben mit diesen Zeichen existieren (z. B. München).

Im Einzelnen:
1 Telefonbuch der Fritz!Box als XML-Datei sichern.
2 Mithilfe eines Makros (Excel 2016) Aufbau einer neuen XML-Datei.
2.1 Vor- und Nachnamen trennen.
2.2 Übernahme der Ortsnetznamen aus der JFritz-Datei "areacodes_germany.csv".
2.3 Dateiaufbau entsprechend der Datei "jfritz.phonebook.xml".
3 Dateiimport in JFritz

Die Import findet nur statt, wenn die o. a. Zeichen konvertiert wurden (z. B. ä = ae).

Dieser Datensatz (mit entsprechenden Kopfdaten) würde nicht importiert werden:

<entry private="false">
<name>
<lastname>AOT</lastname>
</name>
<address>
<city>München</city>
</address>
<phonenumbers standard="home">
<number type="home">+498912345678</number>
</phonenumbers>
</entry>

Ein Zurückändern der ausgetauschten Werte in der Datei "jfritz.phonebook.xml" ist ohne Probleme aber mit Aufwand möglich.

JFritz Version 0.7.8
Windows 10 64bit (aktuell)
Excel 2016 (aktuell)

Vielleicht lässt sich das beschriebene Verhalten ändern.
 
Hallo,

Dein Problem ist ganz einfach das dass du die Datei JFritz.xml nicht als UTF-8 Gespeichert hast,
wie es im Kopf der xml steht <?xml version="1.0" encoding="UTF-8"?>

Wenn es Excel nicht kann dann einfach mal im Windows Editor Öffnen und als Neue Datei im UTF-8 Format speichern.

Du kannst es auch mal hiermit FbJfXMLtoFbJfXML.exe versuchen das Tool kann es in beiden Richtungen FB zu JFritz und JFritz zu FB

Die FB.xml wird als <?xml version="1.0" encoding="UTF-8"?> und <?xml version="1.0" encoding="iso-8859-1"?>
unterstützt sowohl beim Lesen und Schreiben, für das Schreiben der FB.xml muss aber in der FbJfXMLtoFbJfXML.ini Datei
der Eintrag Angepasst werden für iso-8859-1 = FbTbOutXmlEncoding="iso-8859-1"
und für UTF-8 = FbTbOutXmlEncoding="UTF-8"

Bitte beachten erst ab mindestens Fritz OS 6 wird UTF-8 Ünterstützt

Änderungen ab mindestens Fritz OS 7 werden von dem Tool nicht Ünterstüzt da ich keine FritzBox mit Version 7 habe Sorry.
 
Hallo Pikachu,

vielen Dank für die Antwort.

Ich habe nunmehr die nicht UTF-8 konformen Zeichen im Makro entsprechend ausgetauscht. Beim Zeichen "&" ist der Austausch sinnlos, weil der Code jeweils identisch ist. Das Einlesen in JFritz funktioniert trotzdem nicht, das Zeichen "&" muss (z. B. gegen "+") ausgetauscht werden.

Unter Berücksichtigung dieser Änderungen ist das Einlesen ohne Probleme möglich.

Nochmals vielen Dank.
 
Na ja nicht gerade die beste Lösung was du hast, besser ist es die Ansi Zeichen ÄÖÜ usw.
vor dem Speichern in UTF-8 zu wandeln und als Binäre Datei zu Speichern ohne Bom da JFritz
das nicht mag.

Ein Beispiel Findet man hier: CSV Export/Speichern als UTF-8
und
Mit Excel VBA Text-Datei schreiben (UTF-8)
usw. im Netz mit Google.

Ich selbst Speichere meine XML Erstellte Datei ohne Bom als Binäre Text Datei
nachdem ich vorher den Text nach UTf-8 Übersetzt habe und die Zeichen die JFritz in
der XML nicht mag.


Ich Übersetze zuerst die entsprechenden Text Felder die Zeichen enthalten die JFritz sonst nicht Lesen kann zum Beispiel hier:
Code:
       sLastName = JFritz_HTMLEncode_ISO8859_1(sLastName)   ' "Last Name" ' 27.11.2017
       sFirstName = JFritz_HTMLEncode_ISO8859_1(sFirstName) ' "First Name" ' 27.11.2017
       sCompany = JFritz_HTMLEncode_ISO8859_1(sCompany)   ' "Company" ' 27.11.2017

       sImageURL = JFritz_HTMLEncode_ISO8859_1(sImageURL) ' "picture" / "imageURL" 27.11.2017

       sEMail = JFritz_HTMLEncode_ISO8859_1(sEMail)       ' "E-Mail" 27.11.2017
und danach zu UTF-8
Code:
     IF nOutXmlEncodingUtf8 = 1 THEN ' 27.11.2017
'
      strAnsi = sTmpStr
      sTmpStr = AnsiToUtf8(strAnsi)
'
     END IF
vor dem Speichern.

Beispiel Ausschnitte von meinem Tool das in PowerBasic 9 für Windows erstellt ist.

Code:
' 10.05.2010
' AnsiToUtf8
' Utf8ToAnsi
'
'
DECLARE FUNCTION AnsiToUtf8(BYVAL strAnsi AS STRING) AS STRING
DECLARE FUNCTION Utf8ToAnsi(BYVAL strUtf8 AS STRING) AS STRING
'
'
FUNCTION AnsiToUtf8(BYVAL strAnsi AS STRING) AS STRING
'
LOCAL sBuffer AS STRING
LOCAL nLength AS LONG
'
sBuffer = SPACE$(LEN(strAnsi) * 2)
MultiByteToWideChar %CP_ACP, 0, BYVAL STRPTR(strAnsi), -1, BYVAL STRPTR(sBuffer), LEN(sBuffer)
strAnsi = sBuffer
nLength = WideCharToMultiByte(%CP_UTF8, 0, BYVAL STRPTR(strAnsi), -1, BYVAL (0), 0, BYVAL (0), BYVAL (0))
sBuffer = SPACE$(nLength -1)
WideCharToMultiByte %CP_UTF8, 0, BYVAL STRPTR(strAnsi), -1, BYVAL STRPTR(sBuffer), LEN(sBuffer), BYVAL (0), BYVAL (0)
'
FUNCTION = sBuffer
'
END FUNCTION
'
'
FUNCTION Utf8ToAnsi(BYVAL strUtf8 AS STRING) AS STRING
'
LOCAL sBuffer AS STRING
LOCAL nLength AS LONG
'
sBuffer = SPACE$(LEN(strUtf8) * 2)
nLength = MultiByteToWideChar(%CP_UTF8, 0, BYVAL STRPTR(strUtf8), -1, BYVAL STRPTR(sBuffer), LEN(sBuffer))
strUtf8 = sBuffer
sBuffer = SPACE$(nLength -1)
WideCharToMultiByte(%CP_ACP, 0, BYVAL STRPTR(strUtf8), -1, BYVAL STRPTR(sBuffer), LEN(sBuffer), BYVAL (0), BYVAL (0))
'
FUNCTION = sBuffer
'
END FUNCTION
'
'
 DECLARE FUNCTION JFritz_HTMLDecode_ISO8859_1(sText AS STRING) AS STRING
 DECLARE FUNCTION JFritz_HTMLEncode_ISO8859_1(sText AS STRING) AS STRING 
'
'
FUNCTION JFritz_HTMLDecode_ISO8859_1(sText AS STRING) AS STRING
' 21.05.2010 HTMLDecode_ISO8859_1
' Ersetzt in den Textfeldern die Zeichen
'  &amp;  = &
'  &apos; = '
'  &lt;   = <
'  &gt;   = >
'
' REPLACE "&nbsp;" WITH CHR$(32) IN sText ' Space ' Wird in JFritz nicht unterstützt
' REPLACE "&quot;" WITH CHR$(34) IN sText ' "     ' Wird in JFritz nicht unterstützt
REPLACE "&amp;" WITH CHR$(38) IN sText  ' &
REPLACE "&apos;" WITH CHR$(39) IN sText ' '
REPLACE "&lt;" WITH CHR$(60) IN sText   ' <
REPLACE "&gt;" WITH CHR$(62) IN sText   ' >
'
JFritz_HTMLDecode_ISO8859_1 = sText
'
END FUNCTION
'
'
FUNCTION JFritz_HTMLEncode_ISO8859_1(sText AS STRING) AS STRING
' 21.05.2010 JFritz_HTMLEncode_ISO8859_1
' Ersetzt in den Textfeldern die Zeichen
'  & = &amp;
'  ' = &apos;
'  < = &lt;
'  > = &gt;
'
' REPLACE CHR$(32) WITH "&nbsp;" IN sText ' Space ' Wird in JFritz nicht unterstützt
' REPLACE CHR$(34) WITH "&quot;" IN sText ' "     ' Wird in JFritz nicht unterstützt
REPLACE CHR$(38) WITH "&amp;" IN sText   ' &
REPLACE CHR$(39) WITH "&apos;" IN sText  ' '
REPLACE CHR$(60) WITH "&lt;" IN sText    ' <
REPLACE CHR$(62) WITH "&gt;" IN sText    ' >
'
JFritz_HTMLEncode_ISO8859_1 = sText
'
END FUNCTION
'
'

Vielleicht Hilft das ein bisschen weiter und du kannst es nach VBA übersetzen anpassen,
aber vieles Findet man mit Google schon zu VBA wie das AnsiToUtf8 und Utf8ToAnsi usw.

Und wie man eine Datei ohne Bom Speichert.

Code:
<entry private="false">
    <name>
        <firstname>ÄÖÜßäöü ? &lt;&apos;&amp;&apos;&gt;</firstname>
        <lastname>Müller &lt;&apos;&amp;&apos;&gt;""</lastname>
    </name>
    <company>&lt;&apos;&amp;&apos;&gt;</company>
    <address>
        <street>&lt;&apos;&amp;&apos;&gt;</street>
        <postcode>&lt;&apos;&amp;&apos;&gt;</postcode>
        <city>&lt;&apos;&amp;&apos;&gt;</city>
    </address>
    <phonenumbers standard="mobile">
        <number type="mobile">017155533399</number>
    </phonenumbers>
    <internet>
        <email>"+4917155533399" &apos;&amp;&apos; &lt;[email protected]&gt;</email>
    </internet>
</entry>
 
Zuletzt bearbeitet:
Hallo Pikachu,

vielen Dank für die sehr umfangreiche Anleitung. Auch die vorhandenen Links habe ich mir angesehen. Leider bin ich vollkommen überfordert. Mein Programmierniveau reicht dafür leider nicht aus. Also werde ich mit der von mir gewählten Lösung zufrieden sein (müssen).
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
244,840
Beiträge
2,219,268
Mitglieder
371,543
Neuestes Mitglied
Brainbanger
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.