2018年6月18日月曜日

ebcdic

http://tunes.sakura.ne.jp/tipi/?VBS%2FEBCDIC%A5%D5%A5%A1%A5%A4%A5%EB%A4%F2%A5%B7%A5%D5%A5%C8JIS%A4%CB%CA%D1%B4%B9%A4%B9%A4%EB *プログラムコード ' ' EBCDIC → Shift-JIS変換(ConvToSjis.vbs) ' ' EBCDICファイルをShift-JISファイルに変換します。 ' ' (使い方) ' ConvToSjis.vbs 変換するファイル名 変換後のファイル名 ' ' Option Explicit Dim objParm Dim objFileSys Dim strReadFilePath Dim strWriteFilePath Dim objReadStream Dim objWriteStream Dim strText Dim strConv Dim ByteArray Dim i, j Dim b Set objParm = Wscript.Arguments If objParm.Count < 2 Then WScript.echo "コマンドライン引数が足りません" WScript.Quit End If strReadFilePath = objParm(0) strWriteFilePath = objParm(1) Set objFileSys = CreateObject("Scripting.FileSystemObject") objFileSys.CreateTextFile strWriteFilePath Set objReadStream = CreateObject("ADODB.Stream") Call objReadStream.Open() objReadStream.Type = 1 'Binary objReadStream.LoadFromFile(strReadFilePath) If objReadStream.Size >= 1 Then ReDim a(objReadStream.Size - 1) j = 0 For i = 1 To objReadStream.Size a(j) = AscB(objReadStream.Read(1)) j = j + 1 Next Set objWriteStream = CreateObject("ADODB.Stream") Call objWriteStream.Open() objWriteStream.Type = 2 'Text objWriteStream.Charset = "ISO_8859-1:1987" b = Translate(a, EBCDIC_To_ASCII_Table()) For i = 0 To UBound(b) Call objWriteStream.WriteText(ChrW(b(i))) Next Call objWriteStream.SaveToFile(strWriteFilePath, 2) Call objWriteStream.Close() End If Call objReadStream.Close() Set objReadStream = Nothing Set objWriteStream = Nothing Set objFileSys = Nothing WScript.Echo "変換が完了しました。" '------------------------------------------------------------------------------ Function Translate(ByVal arrText, xlatTable) ' ' Uses a translation table to map arrText from one character set to another. ' Dim i, num, codeConv, numConv Redim arrConv(Ubound(arrText)) 'WScript.Echo Ubound(arrText) For i = 0 To UBound(arrText) num = arrText(i) 'WScript.Echo num codeConv = Mid(xlatTable, (num * 2) + 1, 2) Execute ("numConv = &H" & codeConv) arrConv(i) = numConv 'If i < 5 Then ' WScript.Echo i & ":'" & Hex(num) & "→" & Hex(numConv) & _ ' "(" & Chr(numConv) & ")" 'End If Next Translate = arrConv End Function Function EBCDIC_To_ASCII_Table() ' ' Returns the following table as a string for use by the Translate ' function to traslate an EBCDIC string to an ASCII-ISO/ANSI string. ' '(Fujitsu EBCDIC) ' 0 1 2 3 4 5 6 7 8 9 A B C D E F ' 0 00 01 02 03 9C 09 86 7F 97 8D 8E 0B 0C 0D 0E 0F :016 :................:O ' 1 10 11 12 13 9D 85 08 87 18 19 92 8F 1C 1D 1E 1F :032 :................:O ' 2 80 81 82 83 84 0A 17 1B 88 89 8A 8B 8C 05 06 07 :048 :................:O ' 3 90 91 16 93 94 95 96 04 98 99 9A 9B 14 15 9E 1A :064 :................:O ' 4 20 A1 A2 A3 A4 A5 A6 A7 A8 A9 5B 2E 3C 28 2B 21 :080 : 。「」、・ヲァィゥ[.<(+!:O ' 5 73 AA AB AC AD AE AF 20 B0 20 5D 5C 2A 29 3B 5E :096 :sェォャュョッ ー ]\*);^:O ' 6 2D 2F 20 63 64 65 66 67 68 69 7C 2C 25 5F 3E 3F :112 :-/ cdefghi|,%_>?:O ' 7 6A 6B 6C 6D 6E 6F 70 71 72 20 3A 23 40 61 3D 22 :128 :jklmnopqr :#@a=":O ' 8 20 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA 74 BB BC BD BE :133 : アイウエオカキクケコtサシスセ:0 ' 9 BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 75 76 CA CB CC :160 :ソタチツテトナニヌネノuvハヒフ:0 ' A 77 7E CD CE CF D0 D1 D2 D3 D4 D5 78 D6 D7 D8 D9 :176 :w~ヘホマミムメモヤユxヨラリル:O ' B 79 7A 20 20 62 20 26 27 20 20 DA DB DC DD DE DF :192 :yz b &' レロワン゙゚:O ' C 7B 41 42 43 44 45 46 47 48 49 E8 E9 EA EB EC ED :208 :{ABCDEFGHI......:O ' D 7D 4A 4B 4C 4D 4E 4F 50 51 52 EE EF F0 F1 F2 F3 :224 :}JKLMNOPQR......:O ' E 24 20 53 54 55 56 57 58 59 5A F4 F5 F6 F7 F8 F9 :240 :$.STUVWXYZ......:O ' F 30 31 32 33 34 35 36 37 38 39 FA FB FC FD FE FF :256 :0123456789......: ' ' 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 2 3 4 5 6 7 8 9 A B C D E F EBCDIC_To_ASCII_Table = _ "000102039C09867F978D8E0B0C0D0E0F101112139D8508871819928F1C1D1E1F" & _ "80818283840A171B88898A8B8C050607909116939495960498999A9B14159E1A" & _ "20A1A2A3A4A5A6A7A8A95B2E3C282B2173AAABACADAEAF20B0205D5C2A293B5E" & _ "2D2F20636465666768697C2C255F3E3F6A6B6C6D6E6F707172203A2340613D22" & _ "20B1B2B3B4B5B6B7B8B9BA74BBBCBDBEBFC0C1C2C3C4C5C6C7C8C97576CACBCC" & _ "777ECDCECFD0D1D2D3D4D578D6D7D8D9797A2020622026272020DADBDCDDDEDF" & _ "7B414243444546474849E8E9EAEBECED7D4A4B4C4D4E4F505152EEEFF0F1F2F3" & _ "2420535455565758595AF4F5F6F7F8F930313233343536373839FAFBFCFDFEFF" End Function '参考 'http://support.microsoft.com/kb/216399/ja 'http://moritora.seesaa.net/article/272675855.html 'http://moritora.seesaa.net/article/272835611.html 'http://www.hitachi.co.jp/Prod/comp/soft1/manual/pc/d3J3820/ISUS0268.HTM 'http://mobile.shinsv.dyndns.org/strings_code/ -参考サイト http://support.microsoft.com/kb/216399/ja

2017年12月24日日曜日

カスタム検索 コミック

2015年2月3日火曜日

Oracleで正規表現

・正規表現による抽出

REGEXP_SUBSTR(string,pattern
    [,position[,occurrence[,match_param[,sub_pattern_pos]]]])

引数
string  対象の文字列式
pattern  正規表現パターン
position   取り出したい文字列の開始位置(1~) default 1
occurence  取り出すまでの検知回数            default 1
match_param 検索パラメータ
sub_pat_pos 取り出すサブパターン位置(\0,\1などに相当)

検索パラメータ
c 大文字小文字を区別する(Case sensitive)
i 大文字小文字を区別しない(case Insensitive / Ignore)
m ^$メタ記号を各行の先頭と末尾に一致させる(Multiple lines)
n メタ記号のドット(.)を改行にも一致させる(Newline)
x 空白を取り除いて評価する(eXcluding white-space)



REGEXP_SUBSTR(COL,'^FILE:(.*)$',1,1,m,1)

FILE:/usr/local/test.log
SETTING:a=123
ERRID:M99999-E
NORMID:M00001-I

/usr/local/test.log




簡易暗号化テキスト

ファイル添付を避けたい場合など
ZIP圧縮で暗号化、BASE64で可読テキスト化
ファイル名も隠す場合は2回ZIPに包む
ZIPでBASE64の冗長化をある程度相殺できる


・ファイルをPWつきZIP
 ※PWないとbase64-decodeすると内容がわかってしまう
 ※ファイル名を見られたくない場合、も一度PWつきZIPにする

・base64-encode

***テキストとして送受信

・base64-decode、ファイルに書込み

・ファイルをZIPとして解凍(PWを入力)
 ※2回zipしている場合は2回解凍


<例>
TEXT   4.5KB
ZIP    3.4KB
BASE64 4.7KB


LinuxでBASE64

・素直にbase64

echo "test" | base64
dGVzdA==

echo "dGVzdA==" | base64 -b

test

cat test.txt | base64 > test_b64.txt


cat test_b64.txt | base64 -d > test_b64_dec.txt



・またはnkf


echo "test" | nkf -MB
dGVzdA==

echo "dGVzdA==" | nkf -mB

test

cat test.txt | nkf -MB > test_b64.txt


cat test_b64.txt | nkf -mB -d > test_b64_dec.txt




WindowsでBASE64

・Windowsではcertutilコマンドで

certutil -encode aaa.txt aaa_base64.txt

certutil -decode aaa_base64.txt aaa.txt


type test.txt
テスト

certutil -encode test.txt test_base64.txt

type test_base64.txt
-----BEGIN CERTIFICATE-----
g2WDWINnIA0K
-----END CERTIFICATE-----

certutil -decode test_base64.txt test_base64_de.txt

type test_base64_de.txt
テスト

2015年2月2日月曜日

OracleでBASE64

・utl_encodeのbase64_encodeを使用
・raw形式にキャストして入力

SELECT  utl_encode.base64_encode( utl_raw.cast_to_raw( TARGET_COLUMN)) FROM TABLE;


----------------
Hello01!

SGVsbG8wMSE=

----------------