Видео ролики бесплатно онлайн

Смотреть русское видео

Официальный сайт rostobrnadzor 24/7/365

Смотреть видео бесплатно

pluton 31.05.2009 17:48

Tips & tricksСкрипт перекодировки fb2 из win1251 в utf8

Всем привет!

Выкладываю небольшой скрипт для перекодировки fb2-файлов из win1251 в utf8.



Скрипт распаковывает все *.fb2.zip файлы, дальше проверяет кодировку, если она windows-1251, то конвертирует в utf-8. Потом каждый файл запаковывается в архив.



 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/bin/bash

# fb2conv - Script unpacks fb2.zip archives,

# reencodes fb2 files from cp1251 to utf8,

# and pack fb2 to fb2.zip

# Copyright (C) 2009 pluton <[email protected]> <[email protected]>

# License: GNU GPL v3



# constants

MASK="*.fb2"

ZIPS="$MASK.zip"

TMPF=".tmp"



# unzip & delete all fb2 archives

zipcount=$( ls $ZIPS 2>/dev/null | wc -l )

if (( $zipcount > 0 ))

then

unzip -qq "$ZIPS" && rm -f $ZIPS

fi



count=0

processed=0

chmod -x $MASK # just in case

for f in $MASK

do

# get present encoding

enc=$( head -1 "$f" | sed 's/^.*encoding="\(<^">*\)".*$/\1/i' |

tr 'A-Z' 'a-z' )



# check encoding

if < x"$enc" == x"windows-1251" >

then

iconv -f cp1251 "$f" | sed '1s/encoding="windows-1251"/encoding="utf-8"/i' > "$TMPF"

mv -f "$TMPF" "$f"

let processed=$processed+1

fi



# pack single file to archive

zip -9qq "$f".zip "$f" && rm -f "$f"



let count=$count+1

done

echo "Altogether $count, processed $processed file(s)"





Собственно, fb2 -- это обычный xml, поэтому можно (попробовать) изменить константу MASK вначале на нужные типы файлов.



зы. это мой первый работающий и полезный шелл-скрипт, поэтому буд рад всяким улучшениям и предложениям.


Тэги: fb2 utf8 win1251 перекодировка скрипт
+ 8 -
Похожие Поделиться

konkere 31.05.2009 19:26 #
+ -1 -
А iconv не возьмёт fb2?
konkere 31.05.2009 19:27 #
+ 1 -
да, не туда смотрю (:
Minoru 31.05.2009 21:41 #
+ 0 -
Сначала тоже про iconv подумал, но прочитав код, понял свою ошибку. Вобщем-то да, неплохо — только зачем? Все FB2 ридеры понимают encoding, к тому же UTF-8 избыточна по отношению к CP1251 (файл разрастётся в полтора-два раза)… Или ты читаешь FB2 с помощью less или more? :)
P.S. И не ржите — впервые я FB2 читал в Блокноте под виндой :)
xT 31.05.2009 21:53 #
+ 3 -
Присоединяюсь - зачем?!
pluton 31.05.2009 22:04 #
+ 2 -
Присоединяюсь - зачем?!

эта затея понадобилась с покупкой lbook reader v3. он действительно читает в utf8 и cp1251, но, как говорят, только с последней прошивки (у меня она и стоит). но, мало ли чего, мож захочу более старые посмотреть (вроде там батарея меньше тратится).
то есть, смысла не много, но пусть будет в Ъ кодировке.
+ появилась возможность поковырять shell scripting и написать полезный скрипт
xT 01.06.2009 00:00 #
+ 3 -
Принято ;)
Minoru 01.06.2009 14:48 #
+ 0 -
Ясно.
ibnteo 01.06.2009 02:28 #
+ -1 -
fb2 файлы это XML, и тут уже по барабану какая у него кодировка, если она указана в заголовке конечно - <?xml version="1.0" encoding="windows-1251"?>
Неужели есть программы, не умеющие работать с отличной от utf-8 кодировкой в fb2?
Minoru 01.06.2009 14:49 #
+ 0 -
Мы всё это уже обсудили выше.

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн