【问题标题】:PHP ansi to utf8 and vice versaPHP ansi 到 utf8,反之亦然
【发布时间】:2014-03-26 10:42:39
【问题描述】:

我只是想完成一些事情,我想将字符串从 ansi 转换为 utf8,反之亦然。

示例:to_ansi(1234) 预期结果:NLKJ

示例:to_utf8(NLKJ) 预期结果:1234

functions I currently have are:

function to_ansi($str)
{
    $newString = "";
    $reversedString = strrev($str);
    for($i=0; $i < strlen($reversedString); $i++ ) {
        $newString .= iconv(mb_detect_encoding(), 'UTF-8', chr(ord($reversedString[$i]) * 1.5));
    }
    return $newString;
}

function to_utf8($str)
{
    $newString = "";
    $reversedString = strrev($str);
    for($i=0; $i < strlen($reversedString); $i++ ) {
        $newString .= iconv(mb_detect_encoding(), 'UTF-8', chr(ord($reversedString[$i]) / 1.5));
    }
    return $newString;
}

使用上面我得到的那些函数

示例:to_ansi(1234) 结果:NLKI

示例:to_utf8(NLKJ) 结果:1224

其实我只是把vbs解释成PHP,原来的函数是:

Function ToAnsi(ByVal strPassword As String) As String
Dim strLetter As String
Dim strRevPass As String
Dim strNewPass As String

strRevPass = strReverse(strPassword)
strNewPass = ""

For a = 1 To Len(strRevPass)

    strLetter = Mid$(strRevPass, a, 1)
    strNewPass = strNewPass & Chr((Asc(strLetter) * 1.5))

Next a

Text2.Text = strNewPass
End Function



Function ToUTF8(ByVal strPassword As String)
Dim strLetter As String
Dim strRevPass As String
Dim strNewPass As String

strRevPass = strReverse(strPassword)
strNewPass = ""

For a = 1 To Len(strRevPass)

    strLetter = Mid$(strRevPass, a, 1)
    strNewPass = strNewPass & Chr(Asc(strLetter) / 1.5)

Next a

txtText3.Text = strNewPass

End Function

【问题讨论】:

  • 为什么你认为 ANSI 中的 1234 应该 UTF-8 中的 NLKJ?

标签: php utf-8


【解决方案1】:

为什么你认为 ANSI 中的 1234 应该是 UTF-8 中的 NLKJ?

问题的原因可能是舍入错误。你乘以 1.5 并除以 1.5。例如,字母“y”(ASCII 122)除以 1.5 是 80 2/3,它被视为 81(字符代码中没有分数)。然后返回:81 * 1.5 = 121.5 被视为 122,产生一个 'z'。

所以很难理解这段代码的含义。它当然不是常规的 ANSI 到 UTF-8 的转换。

它似乎做了一些密码散列/编码,但以一种非常不安全的方式。它只是一种非常简单的编码算法,也可以很容易地解码,除了它本身就被破坏了,并且会破坏您的数据而无法修复。

【讨论】:

猜你喜欢
  • 2013-08-16
  • 2012-06-27
  • 1970-01-01
  • 2013-02-16
  • 1970-01-01
  • 2014-11-08
  • 2012-02-16
  • 2017-02-05
  • 2012-12-01
相关资源
最近更新 更多