Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Выделил конвертор кодировки в отдельный модуль

  • Loading branch information...
commit 524cdbfe83445c5c941bbb1f1baafcc35217488a 1 parent 6032558
@JLarky authored
Showing with 276 additions and 266 deletions.
  1. +5 −266 hello/hello.go → app/app.go
  2. +271 −0 app/cp1251_utf8/cp1251_utf8.go
View
271 hello/hello.go → app/app.go
@@ -1,4 +1,4 @@
-package hello
+package app
import (
"fmt"
@@ -13,6 +13,7 @@ import (
"strings"
"template"
"time"
+ "app/cp1251_utf8"
)
type FreeNumbers struct {
@@ -61,7 +62,7 @@ func update(w http.ResponseWriter, r *http.Request) {
count := fields[f_len-1]
var count_int int
if _, e := fmt.Sscan(count, &count_int); e != nil {
- count_int = 0
+ count_int = 0
}
switch name {
case "акушер-гинекол.": {
@@ -101,7 +102,7 @@ func update(w http.ResponseWriter, r *http.Request) {
a.Endocrinologist = count_int
}
}
- // fmt.Fprint(w, name, " -> ", count_int, "\n")
+ fmt.Fprint(w, name, " -> ", count_int, "\n")
}
}
_, err := datastore.Put(c, datastore.NewIncompleteKey(c, "FreeNumbers", nil), &a)
@@ -154,7 +155,7 @@ func post(r *http.Request, uri, postvars string) string {
}
buffer := bytes.NewBufferString("");
for _, char := range b {
- var ch = utf(char)
+ var ch = cp1251_utf8.Utf(char)
fmt.Fprintf(buffer, "%c", ch)
}
return string(buffer.Bytes())
@@ -202,265 +203,3 @@ const IndexHTML =
<div id='chart_div2' style='width: 980px; height: 340px;'></div>
</body>
</html>`
-
-func utf(a byte) (b uint16) { // http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT
- switch a {
- case 0x00: b = 0x0000
- case 0x01: b = 0x0001
- case 0x02: b = 0x0002
- case 0x03: b = 0x0003
- case 0x04: b = 0x0004
- case 0x05: b = 0x0005
- case 0x06: b = 0x0006
- case 0x07: b = 0x0007
- case 0x08: b = 0x0008
- case 0x09: b = 0x0009
- case 0x0A: b = 0x000A
- case 0x0B: b = 0x000B
- case 0x0C: b = 0x000C
- case 0x0D: b = 0x000D
- case 0x0E: b = 0x000E
- case 0x0F: b = 0x000F
- case 0x10: b = 0x0010
- case 0x11: b = 0x0011
- case 0x12: b = 0x0012
- case 0x13: b = 0x0013
- case 0x14: b = 0x0014
- case 0x15: b = 0x0015
- case 0x16: b = 0x0016
- case 0x17: b = 0x0017
- case 0x18: b = 0x0018
- case 0x19: b = 0x0019
- case 0x1A: b = 0x001A
- case 0x1B: b = 0x001B
- case 0x1C: b = 0x001C
- case 0x1D: b = 0x001D
- case 0x1E: b = 0x001E
- case 0x1F: b = 0x001F
- case 0x20: b = 0x0020
- case 0x21: b = 0x0021
- case 0x22: b = 0x0022
- case 0x23: b = 0x0023
- case 0x24: b = 0x0024
- case 0x25: b = 0x0025
- case 0x26: b = 0x0026
- case 0x27: b = 0x0027
- case 0x28: b = 0x0028
- case 0x29: b = 0x0029
- case 0x2A: b = 0x002A
- case 0x2B: b = 0x002B
- case 0x2C: b = 0x002C
- case 0x2D: b = 0x002D
- case 0x2E: b = 0x002E
- case 0x2F: b = 0x002F
- case 0x30: b = 0x0030
- case 0x31: b = 0x0031
- case 0x32: b = 0x0032
- case 0x33: b = 0x0033
- case 0x34: b = 0x0034
- case 0x35: b = 0x0035
- case 0x36: b = 0x0036
- case 0x37: b = 0x0037
- case 0x38: b = 0x0038
- case 0x39: b = 0x0039
- case 0x3A: b = 0x003A
- case 0x3B: b = 0x003B
- case 0x3C: b = 0x003C
- case 0x3D: b = 0x003D
- case 0x3E: b = 0x003E
- case 0x3F: b = 0x003F
- case 0x40: b = 0x0040
- case 0x41: b = 0x0041
- case 0x42: b = 0x0042
- case 0x43: b = 0x0043
- case 0x44: b = 0x0044
- case 0x45: b = 0x0045
- case 0x46: b = 0x0046
- case 0x47: b = 0x0047
- case 0x48: b = 0x0048
- case 0x49: b = 0x0049
- case 0x4A: b = 0x004A
- case 0x4B: b = 0x004B
- case 0x4C: b = 0x004C
- case 0x4D: b = 0x004D
- case 0x4E: b = 0x004E
- case 0x4F: b = 0x004F
- case 0x50: b = 0x0050
- case 0x51: b = 0x0051
- case 0x52: b = 0x0052
- case 0x53: b = 0x0053
- case 0x54: b = 0x0054
- case 0x55: b = 0x0055
- case 0x56: b = 0x0056
- case 0x57: b = 0x0057
- case 0x58: b = 0x0058
- case 0x59: b = 0x0059
- case 0x5A: b = 0x005A
- case 0x5B: b = 0x005B
- case 0x5C: b = 0x005C
- case 0x5D: b = 0x005D
- case 0x5E: b = 0x005E
- case 0x5F: b = 0x005F
- case 0x60: b = 0x0060
- case 0x61: b = 0x0061
- case 0x62: b = 0x0062
- case 0x63: b = 0x0063
- case 0x64: b = 0x0064
- case 0x65: b = 0x0065
- case 0x66: b = 0x0066
- case 0x67: b = 0x0067
- case 0x68: b = 0x0068
- case 0x69: b = 0x0069
- case 0x6A: b = 0x006A
- case 0x6B: b = 0x006B
- case 0x6C: b = 0x006C
- case 0x6D: b = 0x006D
- case 0x6E: b = 0x006E
- case 0x6F: b = 0x006F
- case 0x70: b = 0x0070
- case 0x71: b = 0x0071
- case 0x72: b = 0x0072
- case 0x73: b = 0x0073
- case 0x74: b = 0x0074
- case 0x75: b = 0x0075
- case 0x76: b = 0x0076
- case 0x77: b = 0x0077
- case 0x78: b = 0x0078
- case 0x79: b = 0x0079
- case 0x7A: b = 0x007A
- case 0x7B: b = 0x007B
- case 0x7C: b = 0x007C
- case 0x7D: b = 0x007D
- case 0x7E: b = 0x007E
- case 0x7F: b = 0x007F
- case 0x80: b = 0x0402
- case 0x81: b = 0x0403
- case 0x82: b = 0x201A
- case 0x83: b = 0x0453
- case 0x84: b = 0x201E
- case 0x85: b = 0x2026
- case 0x86: b = 0x2020
- case 0x87: b = 0x2021
- case 0x88: b = 0x20AC
- case 0x89: b = 0x2030
- case 0x8A: b = 0x0409
- case 0x8B: b = 0x2039
- case 0x8C: b = 0x040A
- case 0x8D: b = 0x040C
- case 0x8E: b = 0x040B
- case 0x8F: b = 0x040F
- case 0x90: b = 0x0452
- case 0x91: b = 0x2018
- case 0x92: b = 0x2019
- case 0x93: b = 0x201C
- case 0x94: b = 0x201D
- case 0x95: b = 0x2022
- case 0x96: b = 0x2013
- case 0x97: b = 0x2014
- case 0x98: b = 0x98 // #UNDEFINED
- case 0x99: b = 0x2122
- case 0x9A: b = 0x0459
- case 0x9B: b = 0x203A
- case 0x9C: b = 0x045A
- case 0x9D: b = 0x045C
- case 0x9E: b = 0x045B
- case 0x9F: b = 0x045F
- case 0xA0: b = 0x00A0
- case 0xA1: b = 0x040E
- case 0xA2: b = 0x045E
- case 0xA3: b = 0x0408
- case 0xA4: b = 0x00A4
- case 0xA5: b = 0x0490
- case 0xA6: b = 0x00A6
- case 0xA7: b = 0x00A7
- case 0xA8: b = 0x0401
- case 0xA9: b = 0x00A9
- case 0xAA: b = 0x0404
- case 0xAB: b = 0x00AB
- case 0xAC: b = 0x00AC
- case 0xAD: b = 0x00AD
- case 0xAE: b = 0x00AE
- case 0xAF: b = 0x0407
- case 0xB0: b = 0x00B0
- case 0xB1: b = 0x00B1
- case 0xB2: b = 0x0406
- case 0xB3: b = 0x0456
- case 0xB4: b = 0x0491
- case 0xB5: b = 0x00B5
- case 0xB6: b = 0x00B6
- case 0xB7: b = 0x00B7
- case 0xB8: b = 0x0451
- case 0xB9: b = 0x2116
- case 0xBA: b = 0x0454
- case 0xBB: b = 0x00BB
- case 0xBC: b = 0x0458
- case 0xBD: b = 0x0405
- case 0xBE: b = 0x0455
- case 0xBF: b = 0x0457
- case 0xC0: b = 0x0410
- case 0xC1: b = 0x0411
- case 0xC2: b = 0x0412
- case 0xC3: b = 0x0413
- case 0xC4: b = 0x0414
- case 0xC5: b = 0x0415
- case 0xC6: b = 0x0416
- case 0xC7: b = 0x0417
- case 0xC8: b = 0x0418
- case 0xC9: b = 0x0419
- case 0xCA: b = 0x041A
- case 0xCB: b = 0x041B
- case 0xCC: b = 0x041C
- case 0xCD: b = 0x041D
- case 0xCE: b = 0x041E
- case 0xCF: b = 0x041F
- case 0xD0: b = 0x0420
- case 0xD1: b = 0x0421
- case 0xD2: b = 0x0422
- case 0xD3: b = 0x0423
- case 0xD4: b = 0x0424
- case 0xD5: b = 0x0425
- case 0xD6: b = 0x0426
- case 0xD7: b = 0x0427
- case 0xD8: b = 0x0428
- case 0xD9: b = 0x0429
- case 0xDA: b = 0x042A
- case 0xDB: b = 0x042B
- case 0xDC: b = 0x042C
- case 0xDD: b = 0x042D
- case 0xDE: b = 0x042E
- case 0xDF: b = 0x042F
- case 0xE0: b = 0x0430
- case 0xE1: b = 0x0431
- case 0xE2: b = 0x0432
- case 0xE3: b = 0x0433
- case 0xE4: b = 0x0434
- case 0xE5: b = 0x0435
- case 0xE6: b = 0x0436
- case 0xE7: b = 0x0437
- case 0xE8: b = 0x0438
- case 0xE9: b = 0x0439
- case 0xEA: b = 0x043A
- case 0xEB: b = 0x043B
- case 0xEC: b = 0x043C
- case 0xED: b = 0x043D
- case 0xEE: b = 0x043E
- case 0xEF: b = 0x043F
- case 0xF0: b = 0x0440
- case 0xF1: b = 0x0441
- case 0xF2: b = 0x0442
- case 0xF3: b = 0x0443
- case 0xF4: b = 0x0444
- case 0xF5: b = 0x0445
- case 0xF6: b = 0x0446
- case 0xF7: b = 0x0447
- case 0xF8: b = 0x0448
- case 0xF9: b = 0x0449
- case 0xFA: b = 0x044A
- case 0xFB: b = 0x044B
- case 0xFC: b = 0x044C
- case 0xFD: b = 0x044D
- case 0xFE: b = 0x044E
- case 0xFF: b = 0x044F
- }
- return
-}
View
271 app/cp1251_utf8/cp1251_utf8.go
@@ -0,0 +1,271 @@
+/*
+ This module does cp1251 to utf8 translation based on translation table:
+ http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP1251.TXT
+
+ This is free and unencumbered software released into the public domain.
+ For more information, please refer to <http://unlicense.org/>
+ */
+
+package cp1251_utf8
+
+var utf = [256]uint16{
+ 0x00: 0x0000,
+ 0x01: 0x0001,
+ 0x02: 0x0002,
+ 0x03: 0x0003,
+ 0x04: 0x0004,
+ 0x05: 0x0005,
+ 0x06: 0x0006,
+ 0x07: 0x0007,
+ 0x08: 0x0008,
+ 0x09: 0x0009,
+ 0x0A: 0x000A,
+ 0x0B: 0x000B,
+ 0x0C: 0x000C,
+ 0x0D: 0x000D,
+ 0x0E: 0x000E,
+ 0x0F: 0x000F,
+ 0x10: 0x0010,
+ 0x11: 0x0011,
+ 0x12: 0x0012,
+ 0x13: 0x0013,
+ 0x14: 0x0014,
+ 0x15: 0x0015,
+ 0x16: 0x0016,
+ 0x17: 0x0017,
+ 0x18: 0x0018,
+ 0x19: 0x0019,
+ 0x1A: 0x001A,
+ 0x1B: 0x001B,
+ 0x1C: 0x001C,
+ 0x1D: 0x001D,
+ 0x1E: 0x001E,
+ 0x1F: 0x001F,
+ 0x20: 0x0020,
+ 0x21: 0x0021,
+ 0x22: 0x0022,
+ 0x23: 0x0023,
+ 0x24: 0x0024,
+ 0x25: 0x0025,
+ 0x26: 0x0026,
+ 0x27: 0x0027,
+ 0x28: 0x0028,
+ 0x29: 0x0029,
+ 0x2A: 0x002A,
+ 0x2B: 0x002B,
+ 0x2C: 0x002C,
+ 0x2D: 0x002D,
+ 0x2E: 0x002E,
+ 0x2F: 0x002F,
+ 0x30: 0x0030,
+ 0x31: 0x0031,
+ 0x32: 0x0032,
+ 0x33: 0x0033,
+ 0x34: 0x0034,
+ 0x35: 0x0035,
+ 0x36: 0x0036,
+ 0x37: 0x0037,
+ 0x38: 0x0038,
+ 0x39: 0x0039,
+ 0x3A: 0x003A,
+ 0x3B: 0x003B,
+ 0x3C: 0x003C,
+ 0x3D: 0x003D,
+ 0x3E: 0x003E,
+ 0x3F: 0x003F,
+ 0x40: 0x0040,
+ 0x41: 0x0041,
+ 0x42: 0x0042,
+ 0x43: 0x0043,
+ 0x44: 0x0044,
+ 0x45: 0x0045,
+ 0x46: 0x0046,
+ 0x47: 0x0047,
+ 0x48: 0x0048,
+ 0x49: 0x0049,
+ 0x4A: 0x004A,
+ 0x4B: 0x004B,
+ 0x4C: 0x004C,
+ 0x4D: 0x004D,
+ 0x4E: 0x004E,
+ 0x4F: 0x004F,
+ 0x50: 0x0050,
+ 0x51: 0x0051,
+ 0x52: 0x0052,
+ 0x53: 0x0053,
+ 0x54: 0x0054,
+ 0x55: 0x0055,
+ 0x56: 0x0056,
+ 0x57: 0x0057,
+ 0x58: 0x0058,
+ 0x59: 0x0059,
+ 0x5A: 0x005A,
+ 0x5B: 0x005B,
+ 0x5C: 0x005C,
+ 0x5D: 0x005D,
+ 0x5E: 0x005E,
+ 0x5F: 0x005F,
+ 0x60: 0x0060,
+ 0x61: 0x0061,
+ 0x62: 0x0062,
+ 0x63: 0x0063,
+ 0x64: 0x0064,
+ 0x65: 0x0065,
+ 0x66: 0x0066,
+ 0x67: 0x0067,
+ 0x68: 0x0068,
+ 0x69: 0x0069,
+ 0x6A: 0x006A,
+ 0x6B: 0x006B,
+ 0x6C: 0x006C,
+ 0x6D: 0x006D,
+ 0x6E: 0x006E,
+ 0x6F: 0x006F,
+ 0x70: 0x0070,
+ 0x71: 0x0071,
+ 0x72: 0x0072,
+ 0x73: 0x0073,
+ 0x74: 0x0074,
+ 0x75: 0x0075,
+ 0x76: 0x0076,
+ 0x77: 0x0077,
+ 0x78: 0x0078,
+ 0x79: 0x0079,
+ 0x7A: 0x007A,
+ 0x7B: 0x007B,
+ 0x7C: 0x007C,
+ 0x7D: 0x007D,
+ 0x7E: 0x007E,
+ 0x7F: 0x007F,
+ 0x80: 0x0402,
+ 0x81: 0x0403,
+ 0x82: 0x201A,
+ 0x83: 0x0453,
+ 0x84: 0x201E,
+ 0x85: 0x2026,
+ 0x86: 0x2020,
+ 0x87: 0x2021,
+ 0x88: 0x20AC,
+ 0x89: 0x2030,
+ 0x8A: 0x0409,
+ 0x8B: 0x2039,
+ 0x8C: 0x040A,
+ 0x8D: 0x040C,
+ 0x8E: 0x040B,
+ 0x8F: 0x040F,
+ 0x90: 0x0452,
+ 0x91: 0x2018,
+ 0x92: 0x2019,
+ 0x93: 0x201C,
+ 0x94: 0x201D,
+ 0x95: 0x2022,
+ 0x96: 0x2013,
+ 0x97: 0x2014,
+ 0x98: 0x98, // #UNDEFINED
+ 0x99: 0x2122,
+ 0x9A: 0x0459,
+ 0x9B: 0x203A,
+ 0x9C: 0x045A,
+ 0x9D: 0x045C,
+ 0x9E: 0x045B,
+ 0x9F: 0x045F,
+ 0xA0: 0x00A0,
+ 0xA1: 0x040E,
+ 0xA2: 0x045E,
+ 0xA3: 0x0408,
+ 0xA4: 0x00A4,
+ 0xA5: 0x0490,
+ 0xA6: 0x00A6,
+ 0xA7: 0x00A7,
+ 0xA8: 0x0401,
+ 0xA9: 0x00A9,
+ 0xAA: 0x0404,
+ 0xAB: 0x00AB,
+ 0xAC: 0x00AC,
+ 0xAD: 0x00AD,
+ 0xAE: 0x00AE,
+ 0xAF: 0x0407,
+ 0xB0: 0x00B0,
+ 0xB1: 0x00B1,
+ 0xB2: 0x0406,
+ 0xB3: 0x0456,
+ 0xB4: 0x0491,
+ 0xB5: 0x00B5,
+ 0xB6: 0x00B6,
+ 0xB7: 0x00B7,
+ 0xB8: 0x0451,
+ 0xB9: 0x2116,
+ 0xBA: 0x0454,
+ 0xBB: 0x00BB,
+ 0xBC: 0x0458,
+ 0xBD: 0x0405,
+ 0xBE: 0x0455,
+ 0xBF: 0x0457,
+ 0xC0: 0x0410,
+ 0xC1: 0x0411,
+ 0xC2: 0x0412,
+ 0xC3: 0x0413,
+ 0xC4: 0x0414,
+ 0xC5: 0x0415,
+ 0xC6: 0x0416,
+ 0xC7: 0x0417,
+ 0xC8: 0x0418,
+ 0xC9: 0x0419,
+ 0xCA: 0x041A,
+ 0xCB: 0x041B,
+ 0xCC: 0x041C,
+ 0xCD: 0x041D,
+ 0xCE: 0x041E,
+ 0xCF: 0x041F,
+ 0xD0: 0x0420,
+ 0xD1: 0x0421,
+ 0xD2: 0x0422,
+ 0xD3: 0x0423,
+ 0xD4: 0x0424,
+ 0xD5: 0x0425,
+ 0xD6: 0x0426,
+ 0xD7: 0x0427,
+ 0xD8: 0x0428,
+ 0xD9: 0x0429,
+ 0xDA: 0x042A,
+ 0xDB: 0x042B,
+ 0xDC: 0x042C,
+ 0xDD: 0x042D,
+ 0xDE: 0x042E,
+ 0xDF: 0x042F,
+ 0xE0: 0x0430,
+ 0xE1: 0x0431,
+ 0xE2: 0x0432,
+ 0xE3: 0x0433,
+ 0xE4: 0x0434,
+ 0xE5: 0x0435,
+ 0xE6: 0x0436,
+ 0xE7: 0x0437,
+ 0xE8: 0x0438,
+ 0xE9: 0x0439,
+ 0xEA: 0x043A,
+ 0xEB: 0x043B,
+ 0xEC: 0x043C,
+ 0xED: 0x043D,
+ 0xEE: 0x043E,
+ 0xEF: 0x043F,
+ 0xF0: 0x0440,
+ 0xF1: 0x0441,
+ 0xF2: 0x0442,
+ 0xF3: 0x0443,
+ 0xF4: 0x0444,
+ 0xF5: 0x0445,
+ 0xF6: 0x0446,
+ 0xF7: 0x0447,
+ 0xF8: 0x0448,
+ 0xF9: 0x0449,
+ 0xFA: 0x044A,
+ 0xFB: 0x044B,
+ 0xFC: 0x044C,
+ 0xFD: 0x044D,
+ 0xFE: 0x044E,
+ 0xFF: 0x044F}
+
+func Utf(a byte) uint16 {
+ return utf[a]
+}
Please sign in to comment.
Something went wrong with that request. Please try again.