php-language-server icon indicating copy to clipboard operation
php-language-server copied to clipboard

PHP Fatal error: Method AdvancedJsonRpc\ErrorResponse::__toS tring() AdvancedJsonRpc\Error: Malformed UTF-8 characters

Open syfxlin opened this issue 6 years ago • 0 comments
trafficstars

Windows 10 1809 charset GBK PHP 7.3.5 npm 6.9.0 node 12.0.1

I tried using iconv to convert (string)$msg, which is still the same, but when I change (string)$msg to something else, the console no longer reports an error.

我尝试过使用iconv转换(string)$msg,还是一样,但是当我将(string)$msg修改成别的字符时,控制台不再报错。

//.....
public function write(Message $msg): Promise
{
    // if the message queue is currently empty, register a write handler.
    if (empty($this->messages)) {
        Loop\addWriteStream($this->output, function () {
            $this->flush();
        });
    }

    $promise = new Promise();
    $this->messages[] = [
        'message' => (string)$msg,
        'promise' => $promise
    ];
    return $promise;
}
//......
Language server exited with exit code 255
DEBUG     Checking PHPLS_ALLOW_XDEBUG
DEBUG     The xdebug extension is loaded (2.7.2)
DEBUG     No restart (PHPLS_ALLOW_XDEBUG=1)

PHP Fatal error:  Method AdvancedJsonRpc\ErrorResponse::__toS
tring() must not throw an exception, caught AdvancedJsonRpc\Error: Malformed UTF-8 characters, possibly incorrectly encoded in C:\Users\syfxl\.vscode-insiders\extensions\felixfbecker.php-intellisense-2.3.10\vendor\felixfbecker\language-server\src\Message.php on line 0
PHP Stack trace:
PHP   1. {main}() C:\Users\syfxl\.vscode-insiders\extensions\felixfbecker.php-intellisense-2.3.10\vendor\felixfbecker\l
anguage-server\bin\php-language-server.php:0
PHP   2. Sabre\Event\Loop\run() C:\Users\syfxl\.vscode-insiders\extensions\felixfbecker.php-intellisense-2.3.10\vendor\felixfbecker\language-
server\bin\php-language-server.php:55
PHP   3. Sabre\Event\Loop\Loop->run() C:\Users\syfxl\.vscode-insiders\extensions\felixfbecker.php-intellisense-2.3.10\vendor\sabre\event\lib\Loop\functions.php:122
PHP   4
. Sabre\Event\Loop\Loop->tick() C:\Users\syfxl\.vscode-insiders\extensions\felixfbecker.php-intellisense-2.3.10\vendor\sabre\event\lib\Loop\Loop.php:194
PHP   5. Sabre\Event\Loop\Loop->runNextTicks() C:\Users\syfxl\.vscode-insiders\extensions\felixfbecker.php-intellisense-2.3.10\vendor\sabre\even
t\lib\Loop\Loop.php:215
PHP   6. Sabre\Event\Promise->Sabre\Event\{closure:C:\Users\syfxl\.vscode-insiders\extensions\felixfbecker.php-intellisense-2.3.10\vendor\sabre\event\lib\Promise.php:238-266}() C:\Users\syfxl\.vscode-insiders\extensions\felixfbecker.php-intellisense-2.3.10\vendor\sabre\event\lib\Loop\Loop.php:26
1
PHP   7. Sabre\Event\{closure:C:\Users\syfxl\.vscode-insiders\extensions\felixfbecker.php-intellisense-2.3.10\vendor\sabre\event\lib\coroutine.php:73-76}
() C:\Users\syfxl\.vscode-insiders\extensions\felixfbecker.php-intellisense-2.3.10\vendor\sabre\event\lib\Promise.php:242
PHP   8. Generator->throw() C:\Users\syfxl\.vscode-insiders\extensions\felixfbecker.php-int
ellisense-2.3.10\vendor\sabre\event\lib\coroutine.php:74
PHP   9. LanguageServer\LanguageServer->LanguageServer\{closure:C:\Users\syfxl\.vscode-insiders\extensions\felixfbecker.php-intellisense-2.3.10\vendor\felixfbecker\language-server\src\LanguageServer.php:122-154}() C:\Users\syfxl\.v
scode-insiders\extensions\felixfbecker.php-intellisense-2.3.10\vendor\sabre\event\lib\coroutine.php:74
PHP  10. LanguageServer\ProtocolStreamWriter->write() C:\Users\syfxl\.vscode-insiders\extensi
ons\felixfbecker.php-intellisense-2.3.10\vendor\felixfbecker\language-server\src\LanguageServer.php:152
PHP  11. LanguageServer\Message->__toString() C:\Users\syfxl\.vscode-insiders\extensions\felixfbecker.php-intellisense-2.3.10\vendor\felixfbecker\language-serve
r\src\ProtocolStreamWriter.php:46
//.....
public function write(Message $msg): Promise
{
    // if the message queue is currently empty, register a write handler.
    if (empty($this->messages)) {
        Loop\addWriteStream($this->output, function () {
            $this->flush();
        });
    }

    $promise = new Promise();
    $this->messages[] = [
        'message' => 'msg',
        'promise' => $promise
    ];
    return $promise;
}
//......
DEBUG     Checking PHPLS_ALLOW_XDEBUG
DEBUG     The xdebug extension is loaded (2.7.2)
DEBUG     No restart (PHPLS_ALLOW_XDEBUG=1)

syfxlin avatar May 10 '19 18:05 syfxlin