Delphi 2009, IdHTTP and UTF8

Hello

I'm having a problem after migrating to Delphi 2009 Win32.
I need to to a login on a web site and parse the returned data, but the problem is that I can't decode UTF8 characters.
In delphi 2007 I used WideStrings and UTF8Decode, although this approach is not working anymore with delphi 2009. 
I replaced WIdeStrings with strings and UTF8Decode to UTF8ToString method, but still can't read the utf8 string. 
anyone can help? :(

here's the code.

var Params: TStringList;
    s: string;
begin
      Params.Add('login=' + UserName);
      Params.Add('passwd=' + Password);
      Params.Add('x=-1');
      Params.Add('y=-1');
      FHttp.Connect('magtifun.ge', 80);
      s := UTF8ToString(FHttp.Post('http://magtifun.ge/index.php?action=login', Params));
      ValidateLoginResult(s);
end;

and �??�?��??�??�?��?��??�??�??�??�??�?? <-- that's the result. Anyone has any idea? :(
0
David
10/14/2008 6:26:23 PM
embarcadero.delphi.general 4258 articles. 0 followers. Follow

9 Replies
1832 Views

Similar Articles

[PageSpeed] 9

<David Popiashvili> wrote in message news:29304@forums.codegear.com...

> I need to to a login on a web site and parse the returned data,
> but the problem is that I can't decode UTF8 characters.

TIdHTTP in D2009 automatically decodes the UTF-8 for you, whereas earlier 
versions did not.  Remove the call to UTF8ToString(), ie:

    var
        Params: TStringList;
        s: string;
    begin
        Params.Add('login=' + UserName);
        Params.Add('passwd=' + Password);
        Params.Add('x=-1');
        Params.Add('y=-1');

        // do not call Connect() manually.  TIdHTTP manages the connection 
internally for you...
        s := FHttp.Post('http://magtifun.ge/index.php?action=login', 
Params);
        ValidateLoginResult(s);
    end;

-- 
Remy Lebeau (TeamB)
0
Remy
10/14/2008 8:08:06 PM
> {quote:title=Remy Lebeau (TeamB) wrote:}{quote}
> <David Popiashvili> wrote in message news:29304@forums.codegear.com...
> 
> > I need to to a login on a web site and parse the returned data,
> > but the problem is that I can't decode UTF8 characters.
> 
> TIdHTTP in D2009 automatically decodes the UTF-8 for you, whereas earlier 
> versions did not.  Remove the call to UTF8ToString(), ie:
> 
>     var
>         Params: TStringList;
>         s: string;
>     begin
>         Params.Add('login=' + UserName);
>         Params.Add('passwd=' + Password);
>         Params.Add('x=-1');
>         Params.Add('y=-1');
> 
>         // do not call Connect() manually.  TIdHTTP manages the connection 
> internally for you...
>         s := FHttp.Post('http://magtifun.ge/index.php?action=login', 
> Params);
>         ValidateLoginResult(s);
>     end;
> 
> -- 
> Remy Lebeau (TeamB)

I tried that way too, but didn't work. In this case the return result looks like this: <B>მხიარული ზუმერი</B>
The site contains Georgian characters. string type supports this character. I can build localized app's for my native language.
Also the problem is not with TIdHTTP, because I'm using this object to login on another localized site(www.sms.ge) and parse data from there and it works fine. the problem is with magtifun.ge. :(
0
David
10/14/2008 9:01:52 PM
<David Popiashvili> wrote in message news:29421@forums.codegear.com...

> I tried that way too, but didn't work.

Does the server's "Content-Type" reply header contain a "charset" attribute 
of "UTF-8"?  Or is the data being encoded to UTF-8 without the server 
setting that attribute?  I can't check right now as my company firewall is 
blocking access to the site.  However, the "charset" attribute is required 
in order for Indy to decode the UTF-8 automatically.  If the server is 
sending an HTML page that specifies the UTF-8 encoding in a <meta> tag 
inside the HTML itself, and not in the HTTP headers, then Indy cannot decode 
it.  If that is the case, then you would have to download the data as a 
TStream instead of a String and then decode that manually.

> Also the problem is not with TIdHTTP, because I'm using this object to
> login on another localized site(www.sms.ge) and parse data from there
> and it works fine.

That site is setting the "charset" attribute in the reply header.

-- 
Remy Lebeau (TeamB)
0
Remy
10/14/2008 9:22:26 PM
> {quote:title=David Popiashvili wrote:}{quote}
> Hello
> 
> I'm having a problem after migrating to Delphi 2009 Win32.
> I need to to a login on a web site and parse the returned data, but the problem is that I can't decode UTF8 characters.
> In delphi 2007 I used WideStrings and UTF8Decode, although this approach is not working anymore with delphi 2009. 
> I replaced WIdeStrings with strings and UTF8Decode to UTF8ToString method, but still can't read the utf8 string. 
> anyone can help? :(
> 
> here's the code.
> 
> var Params: TStringList;
>     s: string;
> begin
>       Params.Add('login=' + UserName);
>       Params.Add('passwd=' + Password);
>       Params.Add('x=-1');
>       Params.Add('y=-1');
>       FHttp.Connect('magtifun.ge', 80);
>       s := UTF8ToString(FHttp.Post('http://magtifun.ge/index.php?action=login', Params));
>       ValidateLoginResult(s);
> end;
> 
> and �??�?��??�??�?��?��??�??�??�??�??�?? <-- that's the result. Anyone has any idea? :(


yes you are right. it contains the charset=utf-8 in meta tag.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<HEAD>
<TITLE>magtifun [http://magtifun.ge]</TITLE>
<META NAME="Generator" CONTENT="Hand-Written">
<META NAME="Author" CONTENT="Shota Megrelishvili; http://www.hit.ge">
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<LINK href="../maingeo2.css" rel="stylesheet" type="text/css">

So I have to decode it manually. I never worked with manual encoding/decoding things. can you point me how can i do that?
and why did it worked with delphi 2007 when I used Widestrigns and UTF8Decode?

Thanks in advance :)
0
David
10/14/2008 9:33:28 PM
<David Popiashvili> wrote in message news:29445@forums.codegear.com...

> So I have to decode it manually. I never worked with manual
> encoding/decoding things. can you point me how can i do that?

The easiest way is to retrieve the data into a TStringStream instead of a 
String.  Under D2009, TStringStream can decode the UTF-8 data for you.  In 
previous versions, you can pass the TStringStream's DataString property to 
UTF8Decode() manually.  For example.

    var
        Params: TStringList;
        ReplyData: TStringStream;
        s: String;
    begin
        Params := TStringList.Create;
        try
            Params.Add('login=' + UserName);
            Params.Add('passwd=' + Password);
            Params.Add('x=-1');
            Params.Add('y=-1');

            {$IFDEF VER200}
            Reply := TStringStream.Create('', CP_UTF8); // UTF-8 data will 
be expected
            {$ELSE}
            ReplyData := TStringStream.Create;
            {$ENDIF}
            try
                FHttp.Post('http://magtifun.ge/index.php?action=login', 
Params, ReplyData);
                {$IFDEF VER200}
                s := ReplyData.DataString; // automatic decode UTF-8 to 
UTF-16
                {$ELSE}
                s := UTF8Decode(ReplyData.DataString); // manual decode 
UTF-8 to UTF-16, then assign to Ansi
                {$ENDIF}
            finally
                Reply.Free;
            end;
        finally
            Params.Free;
        end;
        ValidateLoginResult(s);
    end;

> why did it worked with delphi 2007 when I used Widestrigns and UTF8Decode?

In D2007, TIdHTTP did not decode the UTF-8 data automatically, and Post() 
returned an AnsiString.  So you were passing a UTF-8 encoded AnsiString to 
UTF8Decode(), and all was ok.

In D2009, the same code does not work because TIdHTTP does decode the UTF-8 
data (when it knows it should, anyway), and Post() returns a UnicodeString. 
So you are passing a (possibly valid) UTF-16 encoded UnicodeString to 
UTF8Decode().  However, UTF8Decode() takes a RawByteString as input, and the 
compiler converts UTF-16 to the system default codepage when assigning a 
UnicodeString to a RawByteString, so UTF8Decode() is not receiving UTF-8 
input, and thus returns messed up output.

-- 
Remy Lebeau (TeamB)
0
Remy
10/14/2008 11:56:18 PM
> {quote:title=David Popiashvili wrote:}{quote}
> Hello
> 
> I'm having a problem after migrating to Delphi 2009 Win32.
> I need to to a login on a web site and parse the returned data, but the problem is that I can't decode UTF8 characters.
> In delphi 2007 I used WideStrings and UTF8Decode, although this approach is not working anymore with delphi 2009. 
> I replaced WIdeStrings with strings and UTF8Decode to UTF8ToString method, but still can't read the utf8 string. 
> anyone can help? :(
> 
> here's the code.
> 
> var Params: TStringList;
>     s: string;
> begin
>       Params.Add('login=' + UserName);
>       Params.Add('passwd=' + Password);
>       Params.Add('x=-1');
>       Params.Add('y=-1');
>       FHttp.Connect('magtifun.ge', 80);
>       s := UTF8ToString(FHttp.Post('http://magtifun.ge/index.php?action=login', Params));
>       ValidateLoginResult(s);
> end;
> 
> and �??�?��??�??�?��?��??�??�??�??�??�?? <-- that's the result. Anyone has any idea? :(

Thank you very much, It was really helpfull. :)
0
David
10/15/2008 4:11:50 PM
Hi,

We having a similar problem in Delphi 2009:

We try to get a translation from the Google translation tool using the following code:

function TranslateViaGoogle (ss,lng:string):string;
var s:string;
  url:string;
  a,b:integer;
  http:tidhttp;
  ReplyData: TStringStream;
begin
  http:=tidhttp.Create;
  ReplyData := TStringStream.Create('', CP_UTF8); // UTF-8 data will be expected
  try
    http.ConnectTimeout:=3000;
    url:='http://translate.google.com/translate_t?text='+urlencode(ss)+'&langpair='+urlencode(lng);
    http.Get(url, ReplyData);
    s := ReplyData.DataString; // automatic decode UTF-8 to UTF-16
    a:=pos('<div id=result_box dir="ltr"',s);
    a:=posex('>',s,a);
    b:=posex('</div',s,a);
    result:=decodehtml(copy(s,a+1,b-a-1));
  finally
    ReplyData.Free;
    FreeAndNil(http);
  end;
end;

If you try to translate the word 'Diagnòstic' using the langpair 'ca|es', the result should be 'Diagnóstico' which is right in the web, but in this delphi function we get 'Diagn  stico' as the result.

What's wrong? Any idea? The code has been extracted (with some modification) from the gorm project (http://gorm.po.dk/), unit GoogleTranslate.pas

I hope you can help us.

Thank you so much.
0
Acee
12/11/2008 8:11:51 PM
<Acee 22> wrote in message news:54194@forums.codegear.com...

> We try to get a translation from the Google translation tool
> using the following code:
<snip>

That code won't work in this situation.  Google Translation specifies a 
"charset=UTF-8" attribute in the HTTP "Content-Type" reply header, so 
TIdHTTP.Get() is automatically decoding the UTF-8 bytes and putting decoded 
UTF-16 bytes into the TStringStream.  By specifying TEncoding.UTF8 in 
TStringStream's constructor before calling Get(), you are telling the 
TStringStream.DataString property to interpret the decoded UTF-16 bytes as 
encoded UTF-8 bytes, which will not work correctly.

You based your code on what I told David to use because his website was 
*NOT* providing any "charset" attribute in the HTTP "Content-Type" reply 
header, but was specifying it via a META tag inside the HTML data instead. 
TIdHTTP cannot automatically decode the UTF-8 bytes in that situation.

Since Google is providing a "charset" attribute in the HTTP "Content-Type" 
reply header, you can use the version of Get() that returns a String 
instead:

{code}
function TranslateViaGoogle(const ss, lng: string): string;
var
    s, url: string;
    a,b: Integer;
    http: TIdHTTP;
begin
    http := TIdHTTP.Create;
    try
        http.ConnectTimeout := 3000;
        url := 'http://translate.google.com/translate_t?text=' + urlencode(ss) + '&langpair=' + urlencode(lng);
        s := http.Get(url); // automatic decode UTF-8 to UTF-16
        a := pos('<div id=result_box dir="ltr"', s);
        a := posex('>', s, a);
        b := posex('</div', s, a);
        Result := decodehtml(Copy(s, a+1, b-a-1));
    finally
        FreeAndNil(http);
    end;
end;
{code}

If you do not know ahead of time whether the server will provide a "charset" 
attribute or not, then it would be better to use a TMemoryStream instead of 
a TStringStream.  That way, you will have the raw bytes exactly as the 
server provided them, and can then decide the best way to decode them, ie:

{code}
function TranslateViaGoogle(const ss,lng: string): string;
var
    s, url: string;
    a, b: Integer;
    http: TIdHTTP;
    ReplyData: TMemoryStream;
begin
    http := TIdHTTP.Create;
    try
        ReplyData := TMemoryStream.Create;
        try
            http.ConnectTimeout := 3000;
            url := 'http://translate.google.com/translate_t?text=' + urlencode(ss) + '&langpair=' + urlencode(lng);
            http.Get(url, ReplyData);
            ... decode ReplyData as needed....
            ... assign the decoded bytes to s as needed ...
            a := pos('<div id=result_box dir="ltr"', s);
            a := posex('>', s, a);
            b := posex('</div', s, a);
            Result := decodehtml(Copy(s, a+1, b-a-1));
        finally
            ReplyData.Free;
        end;
    finally
        FreeAndNil(http);
  end;
end;
{code}

If you want to continue using a TStringStream, then I suggest using
TByteStream instead (whih is what TStringStream derives from in D2009)
and then you can use its Bytes property to access the raw bytes, and
decide what suitable TEncoding object to use for decoding the bytes to
a UTF-16 string, ie:

{code}
function TranslateViaGoogle(const ss,lng: string): string;
var
    s, url: string;
    a,b: Integer;
    http: TIdHTTP;
    ReplyData: TByteStream;
begin
    http := TIdHTTP.Create;
    try
        ReplyData := TByteStream.Create;
        try
            http.ConnectTimeout := 3000;
            url := 'http://translate.google.com/translate_t?text=' + urlencode(ss) + '&langpair=' + urlencode(lng);
            http.Get(url, ReplyData);
            s := SomeSuitableEncodingObject.GetString(ReplyData.Bytes, 0, ReplyData.Size);
            a := pos('<div id=result_box dir="ltr"', s);
            a := posex('>', s, a);
            b := posex('</div', s, a);
            Result := decodehtml(Copy(s, a+1, b-a-1));
        finally
            ReplyData.Free;
        end;
    finally
        FreeAndNil(http);
  end;
end;
{code}

-- 
Remy Lebeau (TeamB)
0
Remy
12/11/2008 9:49:04 PM
Hello Remy,

Thank you so much for your quick answer.

The first option is the original one in the gorm project, but it's not working because we get "Diagn·³·stico". This is also the result for the last option if the TEncoding.UTF8 is used to decode the TBytesStream.

In the second option (TMemoryStream), we don't know how the ReplyData should be decoded. Using the Read method didn't work.

We don't know if that's the correct string which has to be decoded somehow or if it's already wrong. Also, we don't know how it should be decoded to get the desired result 'Diagnóstico'.

At the beginning of decodehtml a UTF8Encode is performed but the result is still the same:

{code}
function decodehtml (ps:string):string;
var
  s:utf8string;
  ...
begin
  s:=UTF8Encode(ps);
  ...
end;
{code}

We're new in Delphi 2009 and in encodings translations, we're lost.

Thank you so much again for your help.
0
Acee
12/12/2008 2:14:17 PM
Reply:

Similar Artilces:

Delphi 4 to Delphi 2009
Hello, Thanks to all who answered my previous question. That was a great help. And atlast our client agreed to upgrade our delphi version from 4 to Delphi 2009. *Sigh*. But before that, I need to give the estimation and cost regarding the migration to delphi 2009. Can anyone tell me is there any tool to migrate from delphi 4 to delphi 2009 or just I need to compile our Delphi 4 application in Delphi 2009. I have read from the delphi 2009 feature matrix that Delphi 1 through Delphi 2007 import is possible in delphi 2009. But i am not that sure considering the size of our application. ...

Delphi 5 To Delphi 2009
I upgraded to Delphi 2009 from D5. The install says I can install Delphi and/or C++. Delphi installed OK but I see nothing of C++. What am I missing or does my upgrade not include C++? Thanks It depends on what you bought. If you bought Delphi 2009 only, that's what you get. If you bought Delphi 2009 and C++ Builder 2009 you get both. My guess is you got Delphi 2009 only. The simplest way to verify is look your invoice - it should say I would think. You could also go to members.embarcadero.com, login, then click on my registered products. There will be a textual description of...

Upgrading to Delphi 2009 from Delphi 5
I've decided it's time to upgrade to Delphi 2009 Professional from my current Delphi 5 Professional which (according to the FAQ) makes me eligible for the upgrade pricing. However, I'd just like to clarify how this process works. My concern is that my Delphi 5 is not registered on the CodeGear site and this doesn't seem to be possible as far as I can tell. When installing the trial I noticed that Delphi 2009 registers itself with your CodeGear account so does this mean that the previous version must be registered there to verify you own a Professional edition? I plan to o...

Delphi 2007 to Delphi 2009 Conversion
CharArrayPtr = ^CharArray; CharArray = array[0..MaxInt-1] of Char; How to convert to Delphi 2009? Bill Bill Miller wrote: > CharArrayPtr = ^CharArray; > CharArray = array[0..MaxInt-1] of Char; > > How to convert to Delphi 2009? > > Bill it depends heavelly on how it is used fearther down in your project and what you want to convert it to. I you want to simple convert the declarations ignoring UNicode altogether then the only think you have to change is the CharArray declaratin from a Char to an AnsiChar eg CharArrayPtr = ^CharArray; CharArray =...

Delphi 2009 alongside Delphi 2007
Hi all, I am about to install Delphi 2009 on the same development system as Delphi 2007, before I embark is there anything I should be aware of so as to not break my Delphi 2007 installation and projects ? Thanks JT John Taylor wrote: > Hi all, > > I am about to install Delphi 2009 on the same development system > as Delphi 2007, before I embark is there anything I should be aware > of so as to not break my Delphi 2007 installation and projects ? As long as you install into a separate folder there is no problem with the two versions getting into each other...

Delphi 7 to Delphi 2009 conversion
Hello group, What do I need to do to comile the following code in D2009. Compiler error after the Else E2010: Incompatible Types 'AnsiChar' and 'Char' if isUnicode then SearchHandle := FindFirstFilew( PWideChar( fn ), FindDataW ) else SearchHandle := FindFirstFile( PAnsiChar( Ansistring( fn ) ), FindDataA ); <<<<<compiler error in the above line >>>>>>>>>>> Regards, Bryan > What do I need to do to comile the following code in D2009. > Compiler error after the Else > E2010: Incompati...

is there a Delphi 2007
Would be nice to have a bundle of the latest Delphi packages. Gilbert Padilla wrote: > Would be nice to have a bundle of the latest Delphi packages. > I expect Delphi 2007 will only be on sale until the full RAD Studio 2009 edition is published, including Delphi 2009.net. W ...

Convert Delphi 7 to Delphi 2009 [Edit]
Hi! Please, I have a code done in Delphi 7... Now I want to convert Delphi 7 to Delphi 2009 but I'm having problems when compile the code. Error message: +[DCC Fatal Error] Far.dpr(9): F2063 Could not compile used unit 'System.pas'+ Please can somebody help me? Source Download (349KB): http://rapidshare.com/files/256191328/FileManager.rar.html Mirror Source Download: http://www.megaupload.com/?d=12GYLPT0 Password: delphi Thank u so much! (sorry for my bad english, it is not my native language) Edited by: loquax loquax on Jul 15, 2009 12:24 PM Sorry, bu...

Question about Delphi 2009 vs Delphi 7
Hi, I was wondering if any of you can point me to a URLs that show the most important improvements between these versions of Delphi. The objective is convincing the powers-that-pay-the-bills that moving to D2009 (that we'd have to purchase) is a better idea than moving to D7 (for which we have licenses). Fire at will! -- Saluti, Alessandro Federici ------------------------------- "I have been through some terrible things in my life, some of which actually happened." (Mark Twain) Alessandro Federici wrote: > Hi, > I was wondering if any of yo...

ShareMem Delphi 6 --> Delphi 2009
I have just upgraded from Delphi 6 to Delphi 2009. My software uses about 20 files, plus literally dozens more plug-ins. Every project has ShareMem as its first unit and borlndmm.dll is distributed with the software. I am aware that the Borland Memory Manager was replaced to use FastMM quite some time ago. Will I have to rebuild every EXE and DLL in DElphi 2009 that uses ShareMem, or will supplying the new borlndmm.dll be enough? i.e. I would like to just update the main application EXEs and DLLs, but leave the plug-ins alone. Will this work? Thanks, Jason. -- Jason Sweby So...

ShareMem Delphi 6 --> Delphi 2009
I have just upgraded from Delphi 6 to Delphi 2009. My software uses about 20 files, plus literally dozens more plug-ins. Every project has ShareMem as its first unit and borlndmm.dll is distributed with the software. I am aware that the Borland Memory Manager was replaced to use FastMM quite some time ago. Will I have to rebuild every EXE and DLL in DElphi 2009 that uses ShareMem, or will supplying the new borlndmm.dll be enough? i.e. I would like to just update the main application EXEs and DLLs, but leave the plug-ins alone. Will this work? Thanks, Jason. -- Jason Sweby ...

ShareMem Delphi 6 --> Delphi 2009
I have just upgraded from Delphi 6 to Delphi 2009. My software uses about 20 files, plus literally dozens more plug-ins. Every project has ShareMem as its first unit and borlndmm.dll is distributed with the software. I am aware that the Borland Memory Manager was replaced to use FastMM quite some time ago. Will I have to rebuild every EXE and DLL in DElphi 2009 that uses ShareMem, or will supplying the new borlndmm.dll be enough? i.e. I would like to just update the main application EXEs and DLLs, but leave the plug-ins alone. Will this work? Thanks, Jason. -- Jason Sweby ...

Can delphi 2009 and delphi 7 be on the same computer?
Can I install and run delphi 2009 and delphi 7 separately on the same computer or will they interfer with each other? I have delpi 7 already so do I need to choose a new folder (not c:\Borland) when installing 2009? Lorne Anderson wrote: > Can I install and run delphi 2009 and delphi 7 separately on the same > computer or will they interfer with each other? > > I have delpi 7 already so do I need to choose a new folder (not c:\Borland) > when installing 2009? It works fine. You usually want to install the older version first. As for folders, the root folde...

Why does this work fine in Delphi 2009, but not in Delphi 2010
I've been racking my head trying to figure this out and can't understand what is wrong, TFileStream.ReadComponentRes fails when I try to read a component containing a record, it works fine in Delphi 2009 and Delphi 2007, but fails with Delphi 2010 Here is the unit source and DFM *+//UnitSource+* unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TThresholdMode = (tm0,tm1,tm2,tm3,tm4,tm5); TThreshold = Record Mode:TThresholdMode; Filter,Start,Stop:Integer; end; ...

Web resources about - Delphi 2009, IdHTTP and UTF8 - embarcadero.delphi.general

Delphi - Wikipedia, the free encyclopedia
... an archaeological site and a modern town in Greece on the south-western spur of Mount Parnassus in the valley of Phocis . The site of Delphi ...

Delphi Automotive (@DelphiAuto) on Twitter
Log in Sign up You are on Twitter Mobile because you are using an old version of Internet Explorer. Learn more here Delphi Automotive @ DelphiAuto ...

Delphi Connect for Verizon on the App Store on iTunes
Get Delphi Connect for Verizon on the App Store. See screenshots and ratings, and read customer reviews.


Audi working with Delphi to develop autonomous car tech
Audi is developing an iPad-sized device that will pack all the necessary computing power for a self-driving car

US approves China company's acquisition of Delphi biz
The Committee on Foreign Investment in the United States has formally approved the acquisition of Delphi's global production of braking systems ...

Verizon And Delphi Officially Launch Vehicle Diagnostics Service - $250 For The Module, $5 A Month On ...
If you're a car nut, a paranoid parent, or a small business owner looking to do a little, uh, company vehicle economy analysis, Verizon's teamed ...

Watch out Google: Delphi gives Ars a ride in its self-driving car
The automotive components maker gave Ars a preview ride around the neighborhood. MOUNTAIN VIEW, CA—On Thursday morning I met with Delphi at its ...

The skinny on Delphi's autonomous road trip across the United States
Filed under: Green , Videos , Autonomous Last week, Delphi's autonomous car became the first to complete a coast-to-coast trip across the United ...

Delphi partners with WiTricity on automated wireless charging system
One could easily argue that parking between the white lines at any local hangout presents a challenge for some inexperienced drivers. So, why ...

Resources last updated: 11/27/2015 5:51:32 AM