the best way is to check the 8th position of the VIN
P = 2.0L 8v
3 = 2.0L 16v
Z = 2.3L
here are the possible values for the 8th position of the VIN for each model year from 2000 to 2004. this info was compiled for US market vehicles, but the 8th position still stands for engine choice in canada and the P, 3, Z in the 8th position all mean the same thing in canada.. the only thing I'm not 100% sure is whether or not the 2.3L was even offered in canada
MY 2000
LX - P
SE sedan and wagon - 3, P
ZX3, ZTS - 3
MY 2001
LX - P
SE sedan - 3,P
SE wagon, ZX3, ZTS - 3
MY 2002
LX - P
SE sedan and wagon - 3,P
ZX3, ZX5, ZTS, ZTW - 3
MY 2003
LX - P,Z
SE sedan and wagon - P, 3, Z
ZTS, ZX3, ZX5 - 3, Z
MY 2004
LX - P,Z
SE - 3,Z
ZTS, ZTW - Z
ZX3, ZX5 - Z, 3
EDIT: i changed 'PZEV' to 2.3L because that's how it appeared in my resource, also the P and the 3 were both shown as just 2.0L but i think its pretty obvious that the P is the spi
P = 2.0L 8v
3 = 2.0L 16v
Z = 2.3L
here are the possible values for the 8th position of the VIN for each model year from 2000 to 2004. this info was compiled for US market vehicles, but the 8th position still stands for engine choice in canada and the P, 3, Z in the 8th position all mean the same thing in canada.. the only thing I'm not 100% sure is whether or not the 2.3L was even offered in canada
MY 2000
LX - P
SE sedan and wagon - 3, P
ZX3, ZTS - 3
MY 2001
LX - P
SE sedan - 3,P
SE wagon, ZX3, ZTS - 3
MY 2002
LX - P
SE sedan and wagon - 3,P
ZX3, ZX5, ZTS, ZTW - 3
MY 2003
LX - P,Z
SE sedan and wagon - P, 3, Z
ZTS, ZX3, ZX5 - 3, Z
MY 2004
LX - P,Z
SE - 3,Z
ZTS, ZTW - Z
ZX3, ZX5 - Z, 3
EDIT: i changed 'PZEV' to 2.3L because that's how it appeared in my resource, also the P and the 3 were both shown as just 2.0L but i think its pretty obvious that the P is the spi