[gnome] tekstbestanden krijgen verkeerde mime-type

Pagina: 1
Acties:

  • Mayco
  • Registratie: Augustus 2002
  • Laatst online: 02-02 18:49
ik heb tekstbestanden en als ik die via nautilus wil bekijken, dan krijgen sommige een goed icoon (zodat ze op een tekstbestand lijken), en sommige krijgen een ander icoon. ook kan ik aan de text/plain wel notes hangen, maar aan de andere niet :?

zie screenshot hier: http://users.skynet.be/maycosplace/mime.png

Blue Streak.srt: ok (text/plain)
Eurotrip.srt: verkeerd (application/octet-stream)
de permisies enzo zijn allemaal gelijk, file geeft ook hetzelfde weer.
code:
1
2
3
4
5
6
7
8
[michael@mayco untitled folder]$ ls -l
total 144
-rw-rw-r--  1 michael michael 61017 Jul  8 22:58 Blue Streak.srt
-rw-rw-r--  1 michael michael 75923 Jul  8 22:58 Eurotrip.srt
[michael@mayco untitled folder]$ file *
Blue Streak.srt: ISO-8859 text
Eurotrip.srt:    ISO-8859 text
[michael@mayco untitled folder]$

waar kan dit nu aan liggen? het is niet alleen met die twee files, het lijkt wel random te zijn ofzo.

mjah, geen idee of het nuttig kan zijn, maar een head van de hexdumps van de twee files:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[michael@mayco untitled folder]$ hexdump Blue\ Streak.srt |head
0000000 0a31 3030 303a 3a32 3230 332c 3030 2d20
0000010 3e2d 3020 3a30 3230 303a 2c35 3031 0a30
0000020 6c41 2073 6565 206e 6f6b 656d 7465 202e
0000030 6345 7468 7720 6c65 0a2e 320a 300a 3a30
0000040 3230 303a 2c37 3037 2030 2d2d 203e 3030
0000050 303a 3a32 3930 332c 3030 440a 6d61 7365
0000060 202c 6577 6820 6265 6562 206e 6562 6c65
0000070 2e64 0a0a 0a33 3030 303a 3a32 3930 352c
0000080 3030 2d20 3e2d 3020 3a30 3230 313a 2c32
0000090 3034 0a30 202d 6e45 6820 7465 6120 616c
[michael@mayco untitled folder]$ hexdump Eurotrip.srt |head
0000000 0a31 3030 303a 3a33 3230 312c 3236 2d20
0000010 3e2d 3020 3a30 3330 303a 2c36 3237 0a31
0000020 6547 6566 696c 6963 6574 7265 2c64 480a
0000030 6475 6f73 206e 7865 6d61 6e65 6c6b 7361
0000040 7620 6e61 3220 3030 2e34 0a0a 0a32 3030
0000050 303a 3a33 3332 352c 3035 2d20 3e2d 3020
0000060 3a30 3330 323a 2c35 3535 0a30 6144 7261
0000070 6920 2073 657a 0a2e 6946 6e6f 2e61 0a0a
0000080 0a33 3030 303a 3a33 3533 342c 3439 2d20
0000090 3e2d 3020 3a30 3330 333a 2c38 3432 0a38
[michael@mayco untitled folder]$

  • bkor
  • Registratie: November 2000
  • Niet online
Vandaag had ik de Shared MIME Database specificatie doorgelezen. Bij "Recommended checking order" staat volgens mij een mogelijke oorzaak:
If nothing matches, the default type of application/octet-stream should be used for binary data, or text/plain for textual data. Checking the first 32 bytes of the file for ASCII control characters is a good way to guess whether a file is binary or text, but note that files with high-bit-set characters should still be treated as text since these can appear in UTF-8 text, unlike control characters.
Deze volgorde is aanbevolen en applicaties kunnen er dus van afwijken. Zo te zien controleert gnome indien de mime-type onbekend is de eerste 256 bytes op UTF-8 of ASCII text (non-ASCII dus alleen als het UTF-8 is). Omdat 'file' al aangeeft dat het bestand 'ISO-8859 text' is, zal het bestand waarschijnlijk non-ASCII karakters gebruiken. Deze voldoen niet aan UTF-8 en daarom denkt geeft gnome als mime-type "application/octet-stream".

De hexdump laat trouwens dit niet zien, maar je hexdump laat ook geen 256 karakters zien.

  • Mayco
  • Registratie: Augustus 2002
  • Laatst online: 02-02 18:49
dus omdat er in het nederlands é's en andere tekens voorkomen, krijgen die files geen plain/text? is er dan een manier (commandline tooltje) om van die file toch utf8 te maken zodat ik wel mooie icoontjes heb?

Verwijderd

Mayco schreef op 17 juli 2004 @ 18:10:
dus omdat er in het nederlands é's en andere tekens voorkomen, krijgen die files geen plain/text? is er dan een manier (commandline tooltje) om van die file toch utf8 te maken zodat ik wel mooie icoontjes heb?
Tekens als é zitten idd niet in de standaard (7 bit) ASCII set, maar toch wel in de UTF8 set :?

Ik zie trouwens ook geen tekens die boven de $80 (128) uit komen of onder de $20 (32, controlekarakters in de ASCII set) behalve de UNIX style regeleindes ($0a, 10). Ik kan dus het verschil niet verklaren.

  • Freak_NL
  • Registratie: Juli 2000
  • Laatst online: 29-01 14:41
Je kan, als je het niet erg vind om buiten de bestaande MIME specs heen te gaan, de extentie .srt toevoegen aan de MIME database van je systeem.

Open als root /usr/share/mime/packages/freedesktop.org.xml en ga naar de definitie van text/plain. Voeg daar die extentie toe:

code:
1
2
3
4
5
6
7
8
9
10
11
<mime-type type="text/plain">
    <comment>plain text document</comment>
    <comment xml:lang="no">vanlig tekstdokument</comment>
    <magic priority="50">
      <match offset="0" type="string" value="This is TeX," />
      <match offset="0" type="string" value="This is METAFONT," />
    </magic>
    <glob pattern="*.txt" />
    <glob pattern="*.asc" />
    <glob pattern="*.srt" />
  </mime-type>

Daarna even update-mime-database aanroepen en even uitloggen. Hierbij ga ik er even vanuit dat het je alleen om een paar bestandsformaten toe doen is. :)

Je kan met iconv een tekstbestand altijd omzetten van ISO-8859-15 naar UTF-8 als je dat wilt.

Aanvulling:
De netste manier is natuurlijk om voor de bestandsformaten die je systeem niet kent een nieuwe mimetype aan te maken. Je kan ook even in de bugzilla van Freedesktop.org kijken of er al iets met die bestandsformaten gedaan wordt. Na het toevoegen van je nieuwe bestandsformaat (dit kan in een losse XML file in dezelfde map als de Freedeskop definities) kun je Gnome aanleren hoe de bestanden behandeld moeten worden. :)

[ Voor 29% gewijzigd door Freak_NL op 17-07-2004 19:41 ]