从 cp1255 到 UTF-8 的编码转换

Encoding conversions from cp1255 to UTF-8

我在旧数据库中有以下编码的希伯来语字符串:

éçìéó àú ùîåàì æåñîï äòåáã á÷áåöä îòì 50 ùðä

用于解码此字符串的 ASP 代码如下:

function Get_RightHebrew(ByVal sText)
    Dim i
    Dim sRightText

    if isNull(sText) then
        sRightText = ""
    else
        For i = 1 To Len(sText)
            If (AscW(Mid(sText, i, 1)) >= 1488 And AscW(Mid(sText, i, 1)) <= 1514) Then
                sRightText = sRightText & Chr(AscW(Mid(sText, i, 1)) - 1264)
            else
                sRightText = sRightText & Mid(sText, i, 1)
            End If
        Next
    end if

    Get_RightHebrew = sRightText

End Function

我正在寻找等效的 PHP 函数来将字符串转换为正确的 UTF-8

你有一个 CP1255 编码的字符串,但用 CP1252 (Latin1) 解码,所以你可以通过作弊取回你的希伯来语文本。

# mis-decoded string
$str = "éçìéó àú ùîåàì æåñîï äòåáã á÷áåöä îòì 50 ùðä";

# convert to CP1252 from UTF-8
$str = iconv("UTF-8", "CP1252", $str);

# convert to UTF-8 by claiming $str is encoded with CP1255
$str = iconv("CP1255", "UTF-8", $str);

echo $str;

这是我在网上做的测试:https://3v4l.org/7taaN

我想分享一个示例代码,它使用 mb_* 函数而不是 iconv,但不支持 CP1255。将字符集 ISO-8859-8mb_* 结合使用是一种选择,但由于它是 CP1255 的子集,因此可能会丢失数据。