Строка 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.