Строка MSSQL UTF8 передается в ServicedComponent(COM+), но вывод становится большим5 при отображении с использованием PHP

Я сохранил свои данные в своем MSSQL как UTF8 (я уверен, что это UTF8), и я использую инструмент визуальной отладки студии, и я могу видеть свою строку как UTF8 (потому что определенные символы выходят только в UTF8, а не big5), но после того, как я использую PHP для отображения моих данных через IIS fastCGI, результат big5!.

Я строю простой класс, чтобы проверить это. Можешь попробовать.

using System.EnterpriseServices;
using System.Runtime.InteropServices;

namespace CoreService.HTML
{
    public interface ICore
    {        
        string get_string();
    }

    public class Core : ServicedComponent, ICore
    {
        public string get_string()
        {
            return "堃";
        }    
    }

}

Если вы получите символ вместо?? тогда вы понимаете это правильно. Но я всегда набираю популярность после вызова COM+ в моем PHP. Я пытаюсь Apache, и это все то же самое.

ОБНОВИТЬ:

Пример кода PHP:

$object =  new COM("CoreService.HTML.Core") or die("Unable to instantiate CoreService COM object");
echo $object->get_string();

Пакетный файл установки COM+: (install.bat)

cd\
c:
cd C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\
gacutil /i "c:\Fashion DLL\CoreService.dll"
echo install CoreService.dll Done
cd\
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
regsvcs /u "c:\Fashion DLL\CoreService.dll"
regsvcs "c:\Fashion DLL\CoreService.dll"
echo FashionCoreService done

если вы хотите повторить попытку, вы можете использовать это для удаления файла tlb или файл заблокирован IIS или apache:

cd\
c:
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
regsvcs /u "c:\Fashion DLL\CoreService.dll"
regasm /u "c:\Fashion DLL\CoreService.dll"
echo remove FashionCoreService done
iisreset
del "c:\Fashion DLL\CoreService.tlb"
pause

1 ответ

Решение

Я нашел решение.

$ object = new COM ("CoreService.HTML.Core", null, 65001) или die ("Невозможно создать экземпляр CoreService COM-объекта"); echo $object->get_string();

третий параметр - это параметр кодовой страницы, просто назначьте 65001 (utf-8), тогда PHP подключится к COM, используя UTF-8.

Другие вопросы по тегам