php - 从 cp1255 到 UTF-8 的编码转换

标签 php encoding utf-8 asp-classic hebrew

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

éçìéó àú ùîåàì æåñîï äòåáã á÷áåöä îòì 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 的子集,因此可能会遇到数据丢失。

关于php - 从 cp1255 到 UTF-8 的编码转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44135731/

相关文章:

php - Doctrine2 在 select 时有超过 1000 行的问题

python - 批量发出请求时出现编码问题?

c# - 从 C# Windows 应用程序中的 PHP 页面获取 utf8 字符串

java - Android 中的 UTF-8 转换?

php - 为什么我不能更改我的 laravel 项目的生产模式?

php - 从 jQuery UI 对话框进行 AJAX 调用

Java:使用默认邮件客户端发送电子邮件:如何换行?

python - Python 改为 UTF-8 后出现奇怪的字符

php - 使用 php 从数据库创建页面 [就像框架或 cms 正在做的那样]

php - mySQL(和 php)中的特殊字符 - 基础知识