中文pppoe中文拨号的解决方案

原创 2015年11月18日 13:14:32
中文pppoe中文拨号的解决方案

1.首先,在编译服务器上编译出libiconv.ipk,make menuconfig命令之后,选择iconv选项,然后编译出来的bin文件中就有了libiconv软件。当然,在openwrt中也会有iconv命令。
接着,使用iconv -l命令查看支持的编码格式:
ANSI_X3.4-1968 ANSI_X3.4-1986 ASCII CP367 IBM367 ISO-IR-6 ISO646-US ISO_646.IRV:1991 US US-ASCII CSASCII
UTF-8
ISO-10646-UCS-2 UCS-2 CSUNICODE
UCS-2BE UNICODE-1-1 UNICODEBIG CSUNICODE11
UCS-2LE UNICODELITTLE
ISO-10646-UCS-4 UCS-4 CSUCS4
UCS-4BE
UCS-4LE
UTF-16
UTF-16BE
UTF-16LE
UTF-32
UTF-32BE
UTF-32LE
UNICODE-1-1-UTF-7 UTF-7 CSUNICODE11UTF7
UCS-2-INTERNAL
UCS-2-SWAPPED
UCS-4-INTERNAL
UCS-4-SWAPPED
C99
JAVA
CP819 IBM819 ISO-8859-1 ISO-IR-100 ISO8859-1 ISO_8859-1 ISO_8859-1:1987 L1 LATIN1 CSISOLATIN1
ISO-8859-2 ISO-IR-101 ISO8859-2 ISO_8859-2 ISO_8859-2:1987 L2 LATIN2 CSISOLATIN2
ISO-8859-3 ISO-IR-109 ISO8859-3 ISO_8859-3 ISO_8859-3:1988 L3 LATIN3 CSISOLATIN3
ISO-8859-4 ISO-IR-110 ISO8859-4 ISO_8859-4 ISO_8859-4:1988 L4 LATIN4 CSISOLATIN4
CYRILLIC ISO-8859-5 ISO-IR-144 ISO8859-5 ISO_8859-5 ISO_8859-5:1988 CSISOLATINCYRILLIC
ARABIC ASMO-708 ECMA-114 ISO-8859-6 ISO-IR-127 ISO8859-6 ISO_8859-6 ISO_8859-6:1987 CSISOLATINARABIC
ECMA-118 ELOT_928 GREEK GREEK8 ISO-8859-7 ISO-IR-126 ISO8859-7 ISO_8859-7 ISO_8859-7:1987 ISO_8859-7:2003 CSISOLATINGREEK
HEBREW ISO-8859-8 ISO-IR-138 ISO8859-8 ISO_8859-8 ISO_8859-8:1988 CSISOLATINHEBREW
ISO-8859-9 ISO-IR-148 ISO8859-9 ISO_8859-9 ISO_8859-9:1989 L5 LATIN5 CSISOLATIN5
ISO-8859-10 ISO-IR-157 ISO8859-10 ISO_8859-10 ISO_8859-10:1992 L6 LATIN6 CSISOLATIN6
ISO-8859-11 ISO8859-11 ISO_8859-11
ISO-8859-13 ISO-IR-179 ISO8859-13 ISO_8859-13 L7 LATIN7
ISO-8859-14 ISO-CELTIC ISO-IR-199 ISO8859-14 ISO_8859-14 ISO_8859-14:1998 L8 LATIN8
ISO-8859-15 ISO-IR-203 ISO8859-15 ISO_8859-15 ISO_8859-15:1998 LATIN-9
ISO-8859-16 ISO-IR-226 ISO8859-16 ISO_8859-16 ISO_8859-16:2001 L10 LATIN10
KOI8-R CSKOI8R
KOI8-U
KOI8-RU
CP1250 MS-EE WINDOWS-1250
CP1251 MS-CYRL WINDOWS-1251
CP1252 MS-ANSI WINDOWS-1252
CP1253 MS-GREEK WINDOWS-1253
CP1254 MS-TURK WINDOWS-1254
CP1255 MS-HEBR WINDOWS-1255
CP1256 MS-ARAB WINDOWS-1256
CP1257 WINBALTRIM WINDOWS-1257
CP1258 WINDOWS-1258
850 CP850 IBM850 CSPC850MULTILINGUAL
862 CP862 IBM862 CSPC862LATINHEBREW
866 CP866 IBM866 CSIBM866
MAC MACINTOSH MACROMAN CSMACINTOSH
MACCENTRALEUROPE
MACICELAND
MACCROATIAN
MACROMANIA
MACCYRILLIC
MACUKRAINE
MACGREEK
MACTURKISH
MACHEBREW
MACARABIC
MACTHAI
HP-ROMAN8 R8 ROMAN8 CSHPROMAN8
NEXTSTEP
ARMSCII-8
GEORGIAN-ACADEMY
GEORGIAN-PS
KOI8-T
CP154 CYRILLIC-ASIAN PT154 PTCP154 CSPTCP154
MULELAO-1
CP1133 IBM-CP1133
ISO-IR-166 TIS-620 TIS620 TIS620-0 TIS620.2529-1 TIS620.2533-0 TIS620.2533-1
CP874 WINDOWS-874
VISCII VISCII1.1-1 CSVISCII
TCVN TCVN-5712 TCVN5712-1 TCVN5712-1:1993
ISO-IR-14 ISO646-JP JIS_C6220-1969-RO JP CSISO14JISC6220RO
JISX0201-1976 JIS_X0201 X0201 CSHALFWIDTHKATAKANA
ISO-IR-87 JIS0208 JIS_C6226-1983 JIS_X0208 JIS_X0208-1983 JIS_X0208-1990 X0208 CSISO87JISX0208
ISO-IR-159 JIS_X0212 JIS_X0212-1990 JIS_X0212.1990-0 X0212 CSISO159JISX02121990
CN GB_1988-80 ISO-IR-57 ISO646-CN CSISO57GB1988
CHINESE GB_2312-80 ISO-IR-58 CSISO58GB231280
CN-GB-ISOIR165 ISO-IR-165
ISO-IR-149 KOREAN KSC_5601 KS_C_5601-1987 KS_C_5601-1989 CSKSC56011987
EUC-JP EUCJP EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE CSEUCPKDFMTJAPANESE
MS_KANJI SHIFT-JIS SHIFT_JIS SJIS CSSHIFTJIS
CP932
ISO-2022-JP CSISO2022JP
ISO-2022-JP-1
ISO-2022-JP-2 CSISO2022JP2
CN-GB EUC-CN EUCCN GB2312 CSGB2312
GBK
CP936 MS936 WINDOWS-936
GB18030
ISO-2022-CN CSISO2022CN
ISO-2022-CN-EXT
HZ HZ-GB-2312
EUC-TW EUCTW CSEUCTW
BIG-5 BIG-FIVE BIG5 BIGFIVE CN-BIG5 CSBIG5
CP950
BIG5-HKSCS:1999
BIG5-HKSCS:2001
BIG5-HKSCS BIG5-HKSCS:2004 BIG5HKSCS
EUC-KR EUCKR CSEUCKR
CP949 UHC
CP1361 JOHAB
ISO-2022-KR CSISO2022KR
437 CP437 IBM437 CSPC8CODEPAGE437
CP737
CP775 IBM775 CSPC775BALTIC
852 CP852 IBM852 CSPCP852
CP853
855 CP855 IBM855 CSIBM855
857 CP857 IBM857 CSIBM857
CP858
860 CP860 IBM860 CSIBM860
861 CP-IS CP861 IBM861 CSIBM861
863 CP863 IBM863 CSIBM863
CP864 IBM864 CSIBM864
865 CP865 IBM865 CSIBM865
869 CP-GR CP869 IBM869 CSIBM869
CP1125

刚开始使用这个命令的时候,敲完这个命令,页面显示很少的编码格式支持,所以,我就在网上找到一篇博客,说的是在编译的时候需要把
zhangge@Server-SW-X03:~/openwrt-3.10.14/package/libs/libiconv-full/patches$
目录下的100-开头的文件删除掉,因为这个文件会不支持所有亚洲编码。然后就可以使用更多的编码格式了,在这里感谢博主的分享。

然后我们就可以使用iconv命令了。


当然,之所以不支持中文拨号,是因为界面上的编码格式是utf-8,而电信服务器上是gb2312编码格式。
在这里,我提供一种思路,那就是在
/usr/lib/lua/luci/cbi.lua
中,改变两个函数的代码。
代码先贴一下:
-- UCI set                                                      
function Map.set(self, section, option, value)
        if type(value) ~= "table" or #value > 0 then
                if option then                    
                        if option == "username"  then
                                local is_success = self.uci:set(self.config, section, option, value)
                                if is_success then               
                                        luci.sys.call("echo \" i am in UCI set.\" >>/dev/console")
                                        luci.sys.call("cp -rf /etc/config/network /etc/config/network1")
                                        luci.sys.call("cp -rf /etc/config/network /etc/config/network2")
                                        luci.sys.call("cd /etc/config/;iconv -f utf-8 -t gb2312 -c network1>network;sleep 1;cd /usr/lib/lua/luci/")
                                        luci.sys.call("sleep 15 >/dev/null 2>&1")
                                        luci.sys.call("echo \" i am in iconv final!\" >>/dev/console")
                                        return true
                                else
                                        return false
                                end
                        else
                                self.uci:set(self.config, section, option, value)
                        end                  
                else                  
                        return self.uci:set(self.config, section, value)
                end                             
        else                 
                return Map.del(self, section, option)
        end
end              
-- UCI get                                                                                              
function Map.get(self, section, option)                                                                 
        if not section then                                                                                                                        
                return self.uci:get_all(self.config)                                                                                               
        elseif option then                                                                                                                         
                if option == "username" then                                                                                                       
                        return self.uci:get(self.config..1, section, option)                          
                else                                                                                  
                        return self.uci:get(self.config, section, option)   
                end                                                      
        else                                                                     
                return self.uci:get_all(self.config, section)                    
        end                                                                      
end       
这样的话,与服务器通信的编码就是network文件,此文件是gb2312的,而显示在页面上的编码就是network1文件,文件是utf-8格式的。
然后,我们就可以使用中文拨号,来连接pppoe服务器,搞定!
版权声明:本文为博主原创文章,未经博主允许不得转载。

Servlet 中文乱码问题及解决方案剖析

一、常识了解 1.GBK包含GB2312,即如果通过GB2312编码后可以通过GBK解码,反之可能不成立; 2.java.nio.charset.Charset.defaultCharse...

Mysql中文乱码问题完美解决方案

原文:http://www.2cto.com/database/201108/101151.html MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例如还停留在lat...
  • luoweifu
  • luoweifu
  • 2013年04月21日 22:51
  • 173858

TOMCAT中文乱码问题的解决方案

本人在使用AliPay的支付接口时遇到notify_url正常,但是return_url乱码,后查询到notify使用的是POST请求,而return_url使用的是GET请求,针对这个情况使用use...
  • babys
  • babys
  • 2017年03月21日 10:24
  • 1259

MinGW编译c++,中文显示乱码解决方案

我比较喜欢MinGW,现在使用的是C:\WINDOWS\system32>gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPE...

微信公众号开发--获取用户信息中文乱码的解决方案

问题描述 不过获取到的数据却是中文乱码 而用java程序获取的结果也是一样的 解决方案 这个乱码主要是由于微信使用UTF-8来编码返回字符串,我们获取到返回...

Ajax Post请求中文乱码问题解决方案

本文介绍解决ajax post中文乱码的问题的方案,如果你的web应用中全部使用utf-8编码,那将不会有这上问题。这里主要是解决那些要求页面编码是gbk或 gb2312等非utf-8编码(有时候由于...

HttpClient使用post和get时Json中文乱码解决方案

深夜了,一个人还是抽时间把今天遇到的问题记录下来。今天遇到一个比价麻烦的问题就是Java中的字符串编码问题,没有了解编码的本质,解决问题无从下手,哎,基础知识不够的话,迟早是要还的。看到这篇文章的你,...

ubuntu下中文乱码解决方案(全)

1、ibus输入法 Ubuntu 系统安装后已经自带了ibus输入法,在英语环境下默认不启动。 配置ibus自动启动可以在ubuntu系统菜单上选择System --- Preferences -...

JS中页面跳转,传值包含中文时乱码解决方案

首先,在JS中将要传递的中文编码:encodeURI(encodeURI(value)); 然后在跳转界面中取值时通过以下方式解码:java.net.URLDecoder.decode(value ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:中文pppoe中文拨号的解决方案
举报原因:
原因补充:

(最多只允许输入30个字)