How to change LibreOffice default text encoding?


4

Saya ingin mengubah penyandian teks default yang digunakan oleh LibreOffice saat menyimpan dokumen sebagai dokumen teks. Di mana saya dapat menemukan pengaturan ini?

Saya ingin itu menjadi UTF-8 TANPA BOM, yang saya percaya disebut ASCII / AS di LibreOffice.

Aku tidak tahu bahwa ada teks dikodekan pilihan di mana Anda dapat (dalam teori, jika benar-benar bekerja) memilih pengkodean setiap file polos. Saya memiliki tiga masalah dengan ini:

  • Itu tidak berfungsi dengan baik. Yaitu sebagian besar waktu itu tidak menampilkan sembulan di mana Anda dapat memilih pengkodean dan hanya menyimpan seolah-olah Anda memilih opsi Teks. Mungkin sekali dalam sepuluh percobaan itu menunjukkan munculan.
  • I only edit plain text files and I use LibreOffice only for spellchecking (and counting words). All the files I will ever want to write should be UTF-8 encoded without the BOM, so I'd like to avoid wasting time everytime by manually selecting this option.
  • If I have a file correctly encoded in UTF-8 without the BOM, and I then try to save it using, for example, Ctrl+S then the file will be automatically saved using the Text default encoding which saves the file as UTF-8 with BOM which breaks the file. LibreOffice should preserve the encoding of the file and save the file as UTF-8 without the BOM. Having to use Save As every single time is a real waste of time.

Jawaban:


4

To show the encoding options dialog, go to Save As... and check Edit filter settings.

In order to avoid the slowness of Save As..., you could use a macro like this:

Sub SaveAsUtf8
    dim aUrl()
    dim fileProps(1) as new com.sun.star.beans.PropertyValue
    fileProps(0).Name = "FilterName"
    fileProps(0).Name = "Text (encoded)"
    fileProps(1).Name = "FilterOptions"
    fileProps(1).Value ="UTF8,CRLF,Liberation Mono,en-US,"
    oDlg = createUnoService("com.sun.star.ui.dialogs.FilePicker")
    oDlg.setMultiSelectionMode(false)
    oDlg.initialize(array(1))
    oDlg.execute
    aUrl = oDlg.getFiles()
    If UBound(aUrl) > -1 Then
        thisComponent.storeAsURL(aURL(0), fileProps())
    End If
End Sub

Set it to a hotkey or toolbar button by going to Tools -> Customize.

It could be modified to use a global variable and save to the previously used location.

UTF-8 WITHOUT the BOM, which I believe is called ASCII/US

No, this produces ASCII-encoded text, which will destroy most Unicode characters.

I do not see any filter options that can save without a BOM from LibreOffice. Instead, there are various command line tools such as iconv that can remove the BOM.

If you have some time, the best solution may be to create a Python or Java macro to read the Writer document and write to a file without the BOM. It could be done in perhaps 30 lines of Python code, or twice that much Java code. Note: I would not recommend doing this in Basic because of its poor file handling functions.


Do you have any idea why LibreOffice is going against the Unicode Standard by adding the BOM for utf-8? Quote: "Use of a BOM is neither required nor recommended for UTF-8". This makes it extremely hard to use such files with other programs (e.g. pdfLaTeX in my case).
Bakuriu

By the way, the macro you have written saves with the BOM right? So it's useless.
Bakuriu

Yes, it does save with the BOM. As stated in the answer, you could use the macro and then run a tool such as iconv to remove the BOM. Or, write a complete solution in Python or Java. I could do it except that this website is not a code writing service, so instead this answer points toward possible solutions.
Jim K

Regarding how LibreOffice is designed, I do not know the motivation behind the decision.
Jim K
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.