Foxpro 简体转繁体的一种方式(代码)

我最近遇到一个问题,开发的ERP有香港同事要用,结果那边繁体系统一遇到简体字就显示成为?号。百般折腾,最后得出一个方法,只要SQL的简体字全部转成繁体,就能正常显示。当然,界面也需要换成纯英文或者繁体,总之在繁体系统下一定不能出现简体,否则就出错。

大陆同事录入的时候,需要将简体转繁体到对应的表供香港同事查询,我用了很多方法,基本上CSDN上的东西我都下载了,全部都不行。最后在梅子论坛上看到 都市夜猫的代码。是目前唯一不出问题的。转载下载,供大家学习改进。

代码来自:http://www.mzvfp.com/forum/read.php?tid=66467


 


CLEAR
m.sss = ' 大陆/台湾字体编码(简繁)转换, OK!'
 
decl_winapi()
m.big5 = gb2big( m.sss )
m.gb_t = big2gb( m.big5, .F. )
m.gb_s = big2gb( m.big5, .T. )
? 'BIG5 码:', CHR(9), CHR(9), m.big5
? '转回 GB 码(繁体):', CHR(9), m.gb_t
? '转回 GB 码(简体):', CHR(9), m.gb_s
RETURN
 
#define SIMPLIFIED  0x02000000 && map traditional chinese to simplified chinese
#define TRADITIONAL 0x04000000 && map simplified chinese to traditional chinese
 
PROCEDURE decl_winapi
    DECLARE Long LCMapString IN WIN32API ;
        Long Locale, ;    && locale identifier
        Long dwMapFlags, ;   && mapping transformation type
        String lpSrcStr, ;   && address of source string
        Long cchSrc, ;    && number of characters in source string
        String @ lpDestStr, ;  && address of destination buffer
        Long cchDest    && size of destination buffer
ENDPROC
 
FUNCTION big2gb( tcString, tlT2S )
    LOCAL iLen, cBuff_WT, cBuff_AT, cBuff_AS
    
    m.cBuff_WT = STRCONV( m.tcString, 5, 950, 1 )
    m.cBuff_AT = STRCONV( m.cBuff_WT, 6, 936, 1 )
    IF ( m.tlT2S )
        m.iLen = LEN( m.cBuff_AT )
        m.cBuff_AS = REPLICATE( CHR(0), m.iLen )
        LCMapString( 0x0804, SIMPLIFIED, m.cBuff_AT, m.iLen, @ m.cBuff_AS, m.iLen )
        RETURN m.cBuff_AS
    ELSE
        RETURN m.cBuff_AT
    ENDIF
ENDFUNC
 
FUNCTION gb2big( tcString )
    LOCAL iLen, cBuff_AT, cBuff_WT
   
    m.iLen = LEN( m.tcString )
    m.cBuff_AT = REPLICATE( CHR(0), m.iLen )
    LCMapString( 0x0804, TRADITIONAL, m.tcString, m.iLen, @ m.cBuff_AT, m.iLen )
    m.cBuff_WT = STRCONV( m.cBuff_AT, 5, 936, 1 )
   
    RETURN STRCONV( m.cBuff_WT, 6, 950, 1 )
ENDFUNC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
矩阵可以通过编写FoxPro代码来实现。下面是一个示例代码: ```foxpro CLEAR ALL SET PROCEDURE TO matrixrotate ADDITIVE FUNCTION matrixrotate LPARAMETERS mInput, iAngle LOCAL mOutput mOutput = CREATEOBJECT("Array", 3, 3) mOutput[1, 1] = mInput[1, 1] * COS(iAngle) + mInput[1, 2] * SIN(iAngle) mOutput[1, 2] = (-1) * mInput[1, 1] * SIN(iAngle) + mInput[1, 2] * COS(iAngle) mOutput[1, 3] = mInput[1, 3] mOutput[2, 1] = mInput[2, 1] * COS(iAngle) + mInput[2, 2] * SIN(iAngle) mOutput[2, 2] = (-1) * mInput[2, 1] * SIN(iAngle) + mInput[2, 2] * COS(iAngle) mOutput[2, 3] = mInput[2, 3] mOutput[3, 1] = mInput[3, 1] mOutput[3, 2] = mInput[3, 2] mOutput[3, 3] = mInput[3, 3] RETURN mOutput ``` 在代码中,我们定义了一个名为matrixrotate的函数,它接受两个参数:mInput代表输入矩阵,iAngle代表旋角度。我们首先创建一个3x3的数组mOutput用于存储旋后的矩阵。 接下来,我们使用以下公式计算矩阵的旋: mOutput[1, 1] = mInput[1, 1] * COS(iAngle) + mInput[1, 2] * SIN(iAngle) mOutput[1, 2] = (-1) * mInput[1, 1] * SIN(iAngle) + mInput[1, 2] * COS(iAngle) mOutput[1, 3] = mInput[1, 3] mOutput[2, 1] = mInput[2, 1] * COS(iAngle) + mInput[2, 2] * SIN(iAngle) mOutput[2, 2] = (-1) * mInput[2, 1] * SIN(iAngle) + mInput[2, 2] * COS(iAngle) mOutput[2, 3] = mInput[2, 3] mOutput[3, 1] = mInput[3, 1] mOutput[3, 2] = mInput[3, 2] mOutput[3, 3] = mInput[3, 3] 最后,我们将旋后的矩阵mOutput返回。 在使用这段代码时,你需要将旋前的矩阵以及想要旋的角度作为参数传递给matrixrotate函数。该函数将返回旋后的矩阵。 这只是一个简单的示例代码,旋矩阵的代码实现可以根据具体的需要进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值