Używam xsl do kontrolowania danych wyjściowych mojego pliku xml, ale znak BOM jest dodawany.Jak usunąć znak BOM z mojego pliku xml
Odpowiedz
Po prostu usuń pierwsze dwa bajty za pomocą dowolnego edytora szesnastkowego.
Lub 3, w zależności od smaku UTF – MSalters
Lub 4, dla UTF-32. Ale najprawdopodobniej jest to 3, UTF-8 jest najczęstszym kodowaniem dla XML. –
Miałem wrażenie, że XML jest zachęcany do pisania w Unicode, w kodowaniu Unicode i że niektóre kody Unicode są określone, aby zawierały początkowy znak kolejności bajtów. Bez tego znaku kolejności bajtów twój plik nie jest już poprawnie zakodowany w kodowaniu Unicode i dlatego nie ma już poprawnego XML. Procesory XML są zachęcane do wybaczania, aby natychmiast zawieść przy najmniejszym błędzie (takim jak niepoprawne kodowanie Unicode). Jakie typy procesorów XML chcesz złamać?
Oczywiście, usunięcie znacznika kolejności bajtów z dokumentu zakodowanego w UTF-8 sprawia, że ten dokument wygląda na kodowany ASCII (nie Unicode), a niektóre procesory tekstowe mogą korzystać tylko z dokumentów zakodowanych w formacie ASCII. Czy to jest to, z czym pracujesz?
W przypadku plików XML, które nie określają kodowania i nie mają LM, domyślnym kodowaniem jest UTF-8. – mjn
Jakie kodowanie wyjściowe jest używane przez XSL? Jakie kodowanie jest dokumentem wejściowym? Skąd pochodzą dane wejściowe i gdzie w międzyczasie zostały zapisane/przesłane/pobrane?
XML i XSL powinny domyślnie używać UTF-8, jeśli nic innego nie jest określone. Ale wyraźnie, coś tu idzie nie tak.
Jedną z rzeczy, która może się wydarzyć, jest to, że XML jest serwowany przez serwer sieciowy, który jest domyślnie ustawiony w ISO-8859-1, całkiem dobrym domyślnym ... pre-Unicode.
Nieco poza tematem, ale Joel's very instructive article o kodowaniu tekstu otworzyło mi oczy. Jest wielu ludzi, którzy poza tym są bardzo inteligentni jeśli chodzi o programowanie, ale wciąż upierają się przy myśleniu, że istnieje coś takiego jak "zwykły tekst" lub nazywają ich tekst "ASCII" lub "ANSI". Jest to problem, z którym naprawdę musisz się uporać, jeśli jeszcze tego nie zrobiłeś.
# vim file.xml
:set nobomb
:wq
File BOM Detector (freeware dla Windows) umożliwia łatwe usunięcie bom.
+1 Miałem garść plików z LM w nich, a to narzędzie pomogło mi je łatwo naprawić. Jest to jedyny sposób na wsad, który znalazłem do tej pory bez pisania skryptu. Dzięki! –
+1 To mały samodzielny.exe, który robi dokładnie to, co myślisz, że powinien/mam nadzieję, że to zrobi po czymś BOMs pęczku twoich plików xml. – pettys
wystarczy dodać to w pliku XSLT:
<xsl:output method="text"
encoding="ASCII"/>
Usuń symbol BOM z ciągiem z XSLT jest dość prosta:
<xsl:value-of select="translate(StringWithBOM,'','')"/>
- 1. Jak usunąć BOM z pliku XML w Javie
- 2. Usuwanie znaku BOM w pliku
- 3. Usunąć znak zamówienia bajtów z podpisanego pliku PDF?
- 4. Jak usunąć element root z pliku xml
- 5. Jak usunąć znak z editekstu?
- 6. Usuń znak kolejności bajtów z pliku File.ReadAllBytes (byte [])
- 7. Jak usunąć przestrzeń nazw z pliku wyjściowego xml?
- 8. Jak usunąć znak z elementu tablicy?
- 9. Jak usunąć znak # z danych hash? jquery?
- 10. Jak usunąć duplikat z mojego kodu?
- 11. usunąć znak ucieczki z ciągiem
- 12. Jak mogę usunąć ostatni znak pliku w systemie UNIX?
- 13. Jak usunąć #text z mojego analizowania węzła w Java xml parsowanie domena
- 14. Dodawanie pliku BOM do UTF-8
- 15. jak usunąć napis z xml version String
- 16. XDocument: zapisywanie pliku XML do pliku bez zestawienia komponentów
- 17. Usuwanie wersji z pliku xml
- 18. Usuń znak nowej linii z końca pliku
- 19. Jak usunąć, w tym bieżący znak?
- 20. Czytaj xml z pliku
- 21. Jak usunąć przerywaną linię z mojego interfejsu menu?
- 22. Jak dołączyć znak ampersand (&) do dokumentu XML?
- 23. Jak ustawić tło mojego kształtu w xml?
- 24. LocalDate - Jak usunąć znak "T" w LocalDate
- 25. Jak usunąć ostatni znak na std :: cout?
- 26. niedozwolony znak w dokumencie xml
- 27. Nieprawidłowy komentarz XML: nieprawidłowy znak
- 28. Jak usunąć końcowy znak zapytania z formularza GET bez pól?
- 29. Jak usunąć znak nienumeryczny z łańcucha znaków w java?
- 30. Jak usunąć znak z kolumny w SQL Server?
Nie wygląda duplikatu jako inne pytanie wymienia konkretne narzędzie. – vitaut
W przeciwieństwie do zwykłych plików tekstowych, znacznik kolejności bajtów na pliku XML nie powinien nigdy powodować żadnych problemów, ponieważ wszystkie parsery XML powinny być w stanie sobie z nim poradzić, nawet jeśli jest to "BOM UTF-8". W rzeczywistości jest nawet sugerowany na samym standardzie XML jako część character encoding autodetection. – CesarB
To nie jest sugestia, sekcja F nie jest normatywna. BOM UTF-8 jest wyraźnie dozwolony przez standard Unicode, ale nie jest zalecany - http://en.wikipedia.org/wiki/Byte_order_mark#cite_note-2 - Zestawienie BOM UTF-8 nie wskazuje kolejności bajtów. – mjn