В данном разделе находится общая информация.
В данном разделе находятся примеры различных Linux shell скриптов.
В данном разделе находятся примеры различных скриптов на WSH.
В данном разделе находятся материалы по разным темам.
В данном разделе находится гостевая книга.

Правильный CSS!

Для корректного отображения страницы, рекомендуется использовать браузер поддерживающий JavaScript.

Для навигации пользуйтесь боковым меню и кнопками "Описание" и "Подробно".

Кодировщик-раскодировщик кирилицы в koi8-r, cp1251, utf-8 для создания правил SpamAssassin

Основные возможности:

  • Кодирует строку в koi8-r, cp1251, utf-8;
  • Раскодирует строку из koi8-r, cp1251, utf-8;
  • При кодировании позоляет выбрать учет регистра;
  • Кодирует в удобный вид для написания правил SpamAssassin.

Скриншоты:

Пример кодировки строки

Пример кодировки строки

Учет регистра

Учет регистра

Выбор кодировки

Выбор кодировки

Пример раскодировки строки

Пример раскодировки строки

Пример макроса в формате OpenOffice.org BASIC для кодировки-раскодировки и сам кодировщик-раскодировщик в формате ODS

(Скачать кодировщик-раскодировщик в формате ODS. ЗЫ Не тыкать! Жать правой кнопкой: сохранить ссылку как...)

Описание

Процесс кодировки-раскодировки:
  1. Ввести текстовую строку для кодирования или раскодирования (для раскодирования коды можно вводить в виде \xAB или 0xAB) в ячейку A9 (после ввода выйти из ячейки, напр. нажав Enter) на листе Конвертировать или Реконвертировать соответственно;
  2. Нажать на кнопку Конвертировать или Реконвертировать соответственно;
  3. Результат будет выведен в ячейку A10.
База кодов расположена на листе База.

Пример макроса в формате OpenOffice.org BASIC:

Разработка проводилась в OpenOffice.org 3.0.0 в редакции Novell для openSUSE
Протестировано в: OpenOffice.org 3.1.1
REM  *****  BASIC  *****

Sub Convert
	Dim Doc As Object
	Dim Sheet As Object
	Dim Cell As Object
	Dim CellIn As Object
	Dim CellOut As Object
	Dim CellOutVar As Object
	Dim CellConv As Object
	Dim MyLen As Integer
	Dim MyString As String
	Dim MyChar As String
	Dim CellOutPosX As Integer
	Dim CellOutPosY As Integer
	Dim CellOutString As String
	Dim CellCharset As Object
	Dim CellRegistr As Object
	Dim Charset As String
	Dim Registr As String
	
	Doc = StarDesktop.CurrentComponent
	Sheet = Doc.Sheets(1)
	Cell = Sheet.getCellByPosition(0, 8)
	CellCharset = Sheet.getCellByPosition(0, 7)
	CellRegistr = Sheet.getCellByPosition(0, 6)
	Charset = CellCharset.String
	Registr = CellRegistr.String
	MyLen = Len(Cell.String)
		
	Select Case Charset
	Case "koi8-r":
		CellOutPosX = 8
	Case "cp1251":
		CellOutPosX = 5
	Case "utf-8":
		CellOutPosX = 3
	Case Else:
		CellOutPosX = 2
	End Select
	
	CellIn = Sheet.getCellByPosition(2, 5)
	For A = 1  To MyLen
		MyChar = Mid(Cell.String, A, 1)
		CellIn.String = MyChar
		Select Case Registr
		Case "Нет":
			CellOutVar = Sheet.getCellByPosition(11, 1)
			If CellOutVar.String = "#ЗНАЧЕН!!" Then
				CellOutString = "("
			Else
				CellOutString = "(" + CellOutVar.String
			End If
			For CellOutPosY = 1 To 2
				CellOut = Sheet.getCellByPosition(CellOutPosX, CellOutPosY)
				If CellOut.String = "#ЗНАЧЕН!!" Then
					If CellOutPosY < 2 Then
						CellOutString = CellOutString + "."
					Else
						CellOutString = CellOutString + ")"
					End If
				Else
					If CellOutPosY < 2 Then
						CellOutString = CellOutString + CellOut.String
					Else
						CellOutString = CellOutString + "|" + CellOut.String + ")"
					End If
				End If
			Next
		Case Else:
			If UCase(MyChar) = MyChar Then
				CellOutPosY = 1
			Else
				CellOutPosY = 2
			End If
			CellOut = Sheet.getCellByPosition(CellOutPosX, CellOutPosY)
			CellOutString = CellOut.String
		End Select
		MyString = MyString + CellOutString
	Next
	CellConv = Sheet.getCellByPosition(0, 9)
	CellConv.String = MyString
End Sub

Sub ReConvert
	Dim Doc As Object
	Dim Sheet As Object
	Dim Cell As Object
	Dim CellCharset As Object
	Dim Charset As String
	Dim MyLen As Integer
	Dim CellInPosX As Integer
	Dim CellInHex As Object
	Dim CellInChar As Object
	Dim CellOut As Object
	Dim CellOutPosY As Integer
	Dim A As Integer
	Dim NextA As Integer
	Dim MyChar As String
	Dim MyCharPosX As Integer
	Dim MyCharLenX As Integer
	Dim MyCharDelim As String
	Dim CellOutString As String
	Dim MyString As String
	Dim CellConv As Object
	
	Doc = StarDesktop.CurrentComponent
	Sheet = Doc.Sheets(2)
	Cell = Sheet.getCellByPosition(0, 8)
	CellCharset = Sheet.getCellByPosition(0, 7)
	Charset = CellCharset.String
	MyLen = Len(Cell.String)
		
	Select Case Charset
	Case "koi8-r":
		CellInPosX = 8
	Case "cp1251":
		CellInPosX = 5
	Case "utf-8":
		CellInPosX = 3
	Case Else:
		CellInPosX = 2
	End Select
	CellInHex = Sheet.getCellByPosition(CellInPosX, 5)
	CellInChar = Sheet.getCellByPosition(2, 5)
	A = 1
	Do While A <= MyLen
		MyChar = Mid(Cell.String, A, 2)
		
		Select Case MyChar
		Case "0x":
			MyChar = Mid(Cell.String, A, 4)
			CellInChar.String = ""
			CellInHex.String = MyChar
			CellOutPosY = 1
			MyCharPosX = A + 4
			MyCharLenX = 4
			MyCharDelim = ""
			NextA = 4
		Case "\x":
			MyChar = "0" + Mid(Cell.String, A+1, 3)
			CellInChar.String = ""
			CellInHex.String = MyChar
			CellOutPosY = 1
			MyCharPosX = A + 5
			MyCharLenX = 3
			MyCharDelim = "0"
			NextA = 4
		Case Else:
			MyChar = Mid(Cell.String, A, 1)
			CellInChar.String = MyChar
			CellInHex.String = ""
			If UCase(MyChar) = MyChar Then
				CellOutPosY = 1
			Else
				CellOutPosY = 2
			End If
			NextA = 1
		End Select
		
		CellOut = Sheet.getCellByPosition(2, CellOutPosY)
		If CellOut.String = "#ЗНАЧЕН!!" And CellOutPosY = 1 Then
			CellOutPosY = 2
			CellOut = Sheet.getCellByPosition(2, CellOutPosY)
			If CellOut.String = "#ЗНАЧЕН!!" And Charset = "utf-8" Then
				MyChar = MyChar + MyCharDelim + Mid(Cell.String, MyCharPosX, MyCharLenX)
				CellInChar.String = ""
				CellInHex.String = MyChar
				CellOutPosY = 1
				CellOut = Sheet.getCellByPosition(2, CellOutPosY)
				If CellOut.String = "#ЗНАЧЕН!!" Then
					CellOutPosY = 2
					CellOut = Sheet.getCellByPosition(2, CellOutPosY)
					If CellOut.String <> "#ЗНАЧЕН!!" Then
						A = A + NextA
					End If
				Else
					A = A + NextA
				End If
			End If
		End If
		A = A + NextA
		CellOutString = CellOut.String
		MyString = MyString + CellOutString
	Loop
	CellConv = Sheet.getCellByPosition(0, 9)
	CellConv.String = MyString
	CellInHex.String = ""
End Sub

		

Что нового в этой версии:

Версия 1.1 (Срд Дек 16 2009):
- Исправлен баг с раскодировкой кирилицы из utf-8.
Версия 1.0 (Втр Сен 01 2009):
- Первый релиз.

Rambler's Top100

Yandex.Metrika

Page modification: Птн Сен 10 16:48:29 MSD 2010
Используется Quanta+ 3.5.10 Under the GPL v2 license.
Hosted by uCoz